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

网站建设 类型org域名购买

网站建设 类型,org域名购买,263企业邮箱登录入口手机版下载,定制开发app价格一、为什么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/352812/

相关文章:

  • 陕西个人证书查询网wordpress tdk优化
  • 网站建设与维护的内容公司网站维护经验总结
  • 微网站 杭州wordpress 注册角色
  • 中海外城市建设有限公司网站百度账号中心
  • 邯郸外贸网站建设社保门户网站建设方案
  • 猪八戒做网站怎么样i设计
  • 企业网站推广的形式有网站备案背景幕布打印多大
  • 怎样创造网站电脑软件开发工具
  • 手机网站模板怎么用做网站 信科网站建设便宜
  • seo网站开发注意事项百度网址大全电脑版
  • 网站建设 客户同程网站欧美风格
  • 计算机网络网站网页制作工具通常在哪里建立热点
  • WordPress站点添加ssl证书做网站编辑的时候没保存怎么
  • php商城网站开发实例视频教程网站建设功能介绍
  • 使用mvs2010做网站成都网站建设cdajcx
  • 租电信服务器开网站网站多域名
  • 有网站建设费科目吗oa系统入口
  • 如何做转发文章赚钱的网站网页游戏大全网
  • 视觉上体验的网站深圳建设局网站投诉电话
  • 领导不愿意做招聘网站怎么办佛山顺德专业做网站
  • 做系统的图标下载网站职业技能培训班
  • 万江区做网站环保科技东莞网站建设
  • 单位建设网站需要的材料成品网站免费下载
  • 怎样找做淘宝客的网站群晖wordpress端口
  • 花20亿做网站用flash做网站教程
  • 网站部分链接做301跳转专门看广告赚钱的app
  • 网站评价西安seo盐城
  • 十佳网站杭州制作网站哪家好
  • 哪个模板建站好长治个人网站建设
  • 网站开发项目运营经理岗位职责网站备案 取名资讯通不过