react18中使用redux管理公共数据仓库实现数据immutable更新

[复制链接]
发表于 2024-10-31 20:15:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Immutable.js出自Facebook,是最流行的不可变数据布局的实现之一。它实现了完全的持久化数据布局,使用布局共享。所有的更新操作都会返回新的值,但是在内部布局是共享的,来减少内存占用。Immutablejs官网
  在上一篇介绍redux的文章,我们可以看到在创建的reducer中举行数据更改的时候,会使用…来复制状态数据,为的就是不对原数据举行直接修改,只做替换,就是为了实现react的数据不可变immutable。也就是说假如state的数据比力简单那还好,万一比力复杂,就要复制很多这样的布局数据,很占内存影响app的性能。

安装

  1. npm i immutable redux-immutable -S
复制代码
替换redux中的combineReducers,改用redux-immutable里面的
  1. import { createStore } from "redux";
  2. import { combineReducers } from "redux-immutable";
  3. import { CounterReducer } from "./CounterReducer";
  4. const reducers = combineReducers({
  5.   count: CounterReducer,
  6. });
  7. let store = createStore(reducers);
  8. store.subscribe(() => console.log(store.getState()));
  9. export default store;
复制代码
改造reducers里面的代码
[code]import { fromJS } from "immutable";
const initialState = fromJS({
  counter: 0,
  userInfo: {
    name: "John Doe",
    age: 25,
  },
});
function CounterReducer(state = initialState, action) {
  switch (action.type) {
    case "ADD":
      return state.update("counter", (val) => {
        console.log("
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表