React Dva项目创建Model,并演示数据管理与函数调用

本文的话 我们讲一下定义Model
也就是Dva中redux的部分
我们打开一个刚创建的Dva项目 看到 src下的models 下 就是Model部分 这里 他给我们了一个案例
在这里插入图片描述
如果用 react-redux 管理 模块多了之后会看着比较乱 或 很麻烦
但是 大家会发现 在Model中 他将这些都放在一起了
只需要创建一个这样的文件就可以了

我们在这个models下创建一个自己的 就叫 product.js
在这里插入图片描述
然后编写代码如下

export default {namespace: "product",state: {productList: [{name: "小猫猫"},{name: "小狗狗"}]},reducers: {updatelist(state,action) {let stateClon = deepCopy(state);stateClon.productList.push(action.payload);return stateClon;}}
}function deepCopy(obj) {let str = JSON.stringify(obj);let appobj = JSON.parse(str);return appobj;
}

这里 namespace是一定要写的 相当于名字 然后 state就是我们的数据了 对掌握redux的伙伴比较好理解
reducers中写的是我们操作数据的函数 这里 我们写了一个向数组中加数据的updatelist
其中用到了一个deepCopy
这个是我们用来做深拷贝的 拷贝state
因为redux写明不建议开发者直接操作state 所以 我们先拷贝出来 然后处理好 在return回去

然后 我们看到 src下的index.js 将Model部分注释的代码解开
在这里插入图片描述
就可以看到 它引入的是我们example的例子
我们直接按他这个写法 将引用的文件改成我们自己写的product.js
在这里插入图片描述
然后 我们来试着操作这个数据

我们找一个组件编写代码如下

import React from "react"
import { connect } from "dva";class dom extends React.Component {constructor(props){super(props);this.state = {}}getProduct = () =>{console.log(this.props.productList);}render(){return (<div><button onClick={this.getProduct} type="primary">获取</button></div>)}
}
const mapStateToProps = (state) => {return {productList: state.product}
}
export default connect(mapStateToProps)(dom);

首先 你要引入connect 然后声明一个函数 名字顺便 我这里直接叫 mapStateToProps 他接收一个参数state 然后定义 productList 等于 state.product
这个 state 后面点的等下就要和你Model中的product对应
这样 他就会将对应的Model给你
然后调用connect 第一个参数是获取Model的函数 第二个是组件的实体
此时 我们点击按钮获取 来看一下this.props.productList中的内容
在这里插入图片描述
可以看到 这就是我们product state的数据了
在这里插入图片描述
那么 这里 读到数据了 我们还是要来调用updatelist
我们加一个按钮

<button onClick={this.addProduct} type="primary">添加</button>

addProduct方法参考代码如下

addProduct = () => {this.props.dispatch({type: "product/updatelist",payload: {name: "新数据"}})
}

在这里插入图片描述
这里 我们调用this.props.dispatch type 就是 namespace名/方法名
在这里插入图片描述
第二个参数 就是方法接收到的action

运行代码
然后 我们先点击添加 在点击获取
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18925.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Dcoker Registry搭建私有镜像仓库

Dcoker Registry 和Harbor有什么相似和区别&#xff1f;各自有什么优劣&#xff0c;请详细介绍 Docker Registry和Harbor都是容器镜像仓库管理系统&#xff0c;用于存储、管理和分发Docker镜像。它们有一些相似之处&#xff0c;但也存在一些区别。下面是对它们的相似之处和区别…

IDEA配置Maven教程

IDEA配置Maven教程 &#x1f495;1、mavne的下载&#x1f495;2、maven的安装&#x1f49e;3、配置Maven环境变量&#x1f49e;4、配置 Maven 本地仓库存放路径&#x1f496; 5、settings.xml配置&#xff1b;&#x1f496;6、IDEA配置maven&#xff1b;&#x1f496;7、清理下…

IIS实现http跳转https的重定向方法

整体流程为&#xff1a; 1、安装SSL证书&#xff1b;2、下载安装URL Rewrite模块&#xff1b;3、配置“URL重写”规则&#xff0c;或者修改web.config配置文件。 一、安装部署证书 首先安装SSL证书。 二、安装URL ReWrite扩展 URL ReWrite扩展下载地址https://www.iis.net/…

数据库管理-第八十五期 19c OCM之路-准备与环境篇(20230626)

数据库管理 2023-06-26 第八十五期 19c OCM之路-准备与环境篇1 计划2 考试环境3 技巧和注意事项总结 第八十五期 19c OCM之路-准备与环境篇 从去年就有消息传出&#xff0c;OCM将从12c升级到19c&#xff0c;今年12c OCM停考&#xff0c;从业内大佬和OU处了解到其实今年3月30日…

智慧水务平台-让城市水资源管理更智慧,更高效

平台概述 智慧水务平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑&#xff0c;以城市水资源、水生态、水环境和水…

深入剖析 JavaScript 数组和字符串的各种操作技巧

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;深入剖析 JavaScript 数组和字符串的各种操作技巧 近日总结了一下js数组和字符串相关操作方法&#xff0c;今天输出一篇博客&#xff0c;进行前端有关数组字符串相关操作方法的汇总&#xff0c;以后…

前端|CSS(二)

参考视频&#xff1a;黑马程序员前端CSS3基础教程&#xff0c;前端必备基础 目录 &#x1f4da;CSS 布局的三种机制 &#x1f407;普通流 &#x1f407;浮动 ⭐️浮动介绍 ⭐️浮动(float)的应用 ⭐️浮动(float)的扩展 ⭐️清除浮动 &#x1f407;定位 ⭐️定位 ⭐️…

渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?

在上篇文章中,我们介绍了渲染流水线中的 DOM 生成、样式计算和布局三个阶段,那今天我们接着讲解渲染流水线后面的阶段。 这里还是先简单回顾下上节前三个阶段的主要内容:在 HTML 页面内容被提交给渲染引擎之后,渲染引擎首先将 HTML 解析为浏览器可以理解的 DOM;然后根据 …

uniapp快速开发小程序全流程

uniapp快速开发小程序全流程 完整项目代码&#xff1a;https://gitee.com/Zifasdfa/ziyi-app 欢迎fork与star 1 项目效果及环境准备 1.1 项目效果 本文主要使用uniapp实现一个简单的app应用 1.2 环境准备&项目初始化 ①node环境&#xff1a;去node.js官网下载稳定版的nod…

BATJ 面试 Java 岗:精选 1200+ 面试题及答案

Z 认为&#xff0c;对于 Java 面试以及进阶的最佳学习方法莫过于刷题博客书籍总结&#xff0c;前三者 LZ 将淋漓尽致地挥毫于这篇文章中&#xff0c;至于总结在于个人&#xff0c;实际上越到后面你会发现面试并不难&#xff0c;其次就是在刷题的过程中有没有去思考&#xff0c;…

Fiddler抓取app HTTPS请求

一、电脑和手机连接同一WIFI cmd->ipconfig&#xff0c;查看电脑当前IP地址为192.168.101.48 二、配置Fiddler Options选项勾选Allow remote computers to connect。 安装证书 勾选抓取HTTPS请求 三、手机端配置代理 手机端连接wifi&#xff0c;手动配置代理。 主机名&…

【GPT模型】遥感云大数据在灾害、水体与湿地领域中的应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…