当前位置: 首页 > 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.hkea.cn/news/12576/

相关文章:

  • 有哪些网站是响应式的网络营销策略的定义
  • 做编程的 网站上海十大营销策划公司
  • mysql网站数据库百度ai助手入口
  • 如何做登录网站西安seo外包优化
  • 十堰网站优化torrentkitty磁力搜索引擎
  • 柳州网站seo网站推广公司排名
  • 外贸网店建站模板百度公司网站推广怎么做
  • 网站制作素材图片成都黑帽seo
  • 网站服务器不稳定怎么办短视频营销方式有哪些
  • h5快速建站百中搜
  • 网站制作软件区别佛山关键词排名效果
  • 贵州省建设学校网站首页软文什么意思范例
  • 孝感网站制作win7运行速度提高90%
  • 温州营销网站制作费用软文推广怎么做
  • 网站建设技术合同模板淘宝代运营公司排名
  • 行情网免费网站大全如何制作微信小程序店铺
  • 网站 http 状态码返回值 301电商网站设计模板
  • 西安企业网站建设价格小说推广平台有哪些
  • 网站空间pdf下载不了青岛谷歌优化
  • wordpress mac建站seo优化培训多少钱
  • 做海外网站推广刺激广告
  • 2015年做哪个网站能致富用asp做的网站
  • 长沙培训网站制作seo高级优化技巧
  • 公司商标图案大全北京seo收费
  • 请检查网络青岛seo网站推广
  • 网站制作论坛最近的头条新闻
  • 国内阿里巴巴网站怎么做百度提交入口网址截图
  • 怎样免费做彩票网站如何免费推广一个网站
  • 网站建设改版网站seo收录工具
  • 武汉做营销型网站建设淘宝店铺推广