当前位置: 首页 > news >正文

全国好的深圳网站设计海络网站

全国好的深圳网站设计,海络网站,深圳网站托管,网站制作方案策划简历一、为什么redux中要使用不可变数据 Redux 要求使用不可变数据,是因为它遵循了函数式编程的原则。在函数式编程中,数据不可变是一项重要的原则,这有助于避免状态更改产生的不可预知的副作用。 在 Redux 中,每当 action 被分发&a…

一、为什么redux中要使用不可变数据

Redux 要求使用不可变数据,是因为它遵循了函数式编程的原则。在函数式编程中,数据不可变是一项重要的原则,这有助于避免状态更改产生的不可预知的副作用。

在 Redux 中,每当 action 被分发,reducer 都会接收到当前的状态和 action,并返回一个新的状态。如果使用的是可变数据类型,并且在 reducer 中直接对状态进行修改,就会造成状态的不可预知的更改。

因此,Redux 要求使用不可变数据,是为了更好地管理应用状态,以及提高代码的可读性和可维护性

二、在redux中使用immer

import produce from "immer";
const defaultState = {name: "张三",
};const userReducer = (state = defaultState, action) => {console.log(action);switch (action.type) {case "UPDATE_USER_NAME":return produce(state, (draft) => {draft.name = action.name;});default:return state;}
};export default userReducer;

四、applyMiddleware

1、概念

applyMiddleware 是 Redux 的一个高阶函数,用于向 Redux Store 应用中间件。

中间件是一个函数,它可以在 dispatch 操作执行前后,对 action 进行拦截、处理、修改等操作。例如:日志记录、错误捕获、异步请求、数据缓存等等。

使用 applyMiddleware,你可以实现额外的功能,并且可以在不修改原始代码的情况下对其进行扩展。

2、例子

import { createStore, applyMiddleware } from 'redux'
// 日志插件
import logger from 'redux-logger'
import rootReducer from './reducers'// 直接使用日志插件
const store = createStore(rootReducer, applyMiddleware(logger))

五、进阶——使用immer封装一个redux的中间件,让所有的修改数据都是以不可变数据的方式进行修改

1、创建一个immerMiddleware.js文件

import { produce } from 'immer';// 定义immerMiddleware中间件/*** * store createStore后返回的store,可以使用他的任何方法* next * @returns */
const immerMiddleware = store => next => action => {// 使用immer的produce函数生成新的stateconst newState = produce(store.getState(), draft => {/*** next可以调用对应的action里面的reducer* 并且可以拿到reducer返回的结果* 我们把返回的结果给draft赋值*/draft = next(action);});// 返回新的statereturn newState;
};export default immerMiddleware;

2、使用

import { createStore, applyMiddleware } from 'redux'import immerMiddleware from './plugin/immerMiddleware'
import rootReducer from './reducers'const store = createStore(rootReducer, applyMiddleware(immerMiddleware))

当我们在修改数据的时候就不需要再考虑不可变数据的问题了,因为immer已经统一帮我们处理了

http://www.15wanjia.com/news/182099.html

相关文章:

  • 金色金融公司网站源码专做女裤有哪些网站
  • 厦门做网站公司排名重庆seo网站建设优化
  • 兰州市住房和城乡建设厅官方网站张家界seo推广
  • 电商网站架构设计seo关键词优化培训班
  • 西安seo网站排名优化公司大连网站建设平台
  • 怎么快速优化网站排名公司广告牌制作
  • 企业门户网站登录网站页面设计培训班
  • 网站建设实训教程只有域名可以做网站吗
  • 现在一般做网站都是去哪家做的做网站四百全包
  • 网站后台管理系统背景图片南京凯盛建设集团官方网站
  • 用于公司网站建设的费用记帐分录wordpress标题换行显示不全
  • 即墨网站开发公司wordpress网站怎么建
  • 自己制作一个网站需要什么软件平面设计免费网站推荐
  • 企业建设网站选择wordpress评论显示数字ip
  • 搬家网站自适应wordpress 插件开发教程
  • python做网站优势如何查看wordpress访问流量
  • 天峻县公司网站建设wordpress模板视频
  • 网站开发南京招聘阜宁有做网站的吗
  • 网站建设dw实训总结温州市网络问政平台
  • 微网站建设代运营网站建设销售模式
  • html做校园网站wordpress获取所有分类
  • 信阳建设网站哪家好网络公司经营范围怎么填写
  • 玄圭互联网站建设推广深圳网站建设fantodo
  • 做网站和做游戏哪个难同城网站开发
  • 自助外贸网站制作医药o2o平台有哪些
  • 模块建站平台百度网页版怎么切换
  • 工业和信息化部关于开展加强网站备案管理专项行动的通知网站建设灬金手指下拉十四
  • 中国建设银行网站类型asp 英文企业网站 免费
  • 余杭区住房与建设局网站大佛寺广州网站
  • 冯站长之家网络营销的四种策略