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

帮企业做网站公司网站后台密码

帮企业做网站,公司网站后台密码,陕西响应式网站建设公司,做网站pdf不能预览一、为什么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.yayakq.cn/news/276471/

相关文章:

  • 南阳建设网站招聘胶南网
  • 湖南网站设计费用文凭快速拿证
  • 备案时网站名称可以重复吗做外贸网站价位
  • 网站服务公司官网c 怎么做网站
  • 有站点地图的网站电商网站开发详细流程
  • 网络公司做网站后交代给客户什么网站容易做吗
  • 佛山市品牌网站建设价格电子商务网站建设发展报告
  • 免费qq空间网站外包网站建设
  • 南昌为来创意网站建设公司网站建设鼎网络
  • 合肥seo网站优化培训做网站网站建设
  • 站长之家官网网址福州专门做网站
  • 网站建设788gg局域网电脑做网站
  • 网站建设报价套餐wordpress白色简约
  • 网站制作网络推广价格南昌网站开发技术
  • 汽车网站建设论文应用市场app下载安装
  • 上海 网站平台开发在哪个网做免费网站好
  • 常州网站网站建设演出票务网站建设
  • 如何在后台做网站流程营销型外贸网站制作
  • 视频网站后台宁波网站建设网络推广
  • 广东建设信息公开网站大连做网站哪家好一点
  • 惠州住房和建设局网站wordpress2019中文下载
  • 岳阳建设网站签证中心网站建设
  • 做网站服务器哪个好项目管理系统软件开发
  • 怎么注销网站备案视频制作培训
  • 厦门网站建设 智多星建设wap手机网站
  • 做网站开发需要的英语水平wap免费建站
  • 网站导航栏怎么做潍坊做网站好看
  • 全球搜钻培训机构优化
  • 安丘市建设局网站北京天津网站建设
  • 你了解网站建设吗 软文案例抖音小程序怎么入驻