,

dva immer使用

1. 作用 开启 dva 内置的 immer,简化 reducer 里的 immutable 写法,不用手动浅…

dva: {immer: true}

1. 作用

开启 dva 内置的 immer,简化 reducer 里的 immutable 写法,不用手动浅拷贝 / 深拷贝 state。

不开启 immer(默认 false)

state 不可直接修改,必须返回新对象:

export default {
  namespace: 'user',
  state: { list: [], info: {} },
  reducers: {
    add(state, { payload }) {
      // 必须拷贝,不能 state.list.push
      return {
        ...state,
        list: [...state.list, payload]
      };
    }
  }
};

开启 immer: true

可以直接 mutate 操作 state,immer 内部生成不可变副本:

reducers: {
  add(state, { payload }) {
    state.list.push(payload); // 直接修改,语法更简单
  }
}

不用写 return,dva+immer 自动处理 immutable。

2. 配置位置(umijs /dva)

umi 项目 .umirc.ts/config/config.ts

export default {
  dva: {
    immer: true, // 开启immer
  },
};

原生 dva 初始化

import { createBrowserHistory as createHistory } from 'history';
import { create } from 'dva-core';

const app = create({ history: createHistory(), immer: true });

Previous Post

Next Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About the Author

每个人都有自己得时区,在自己得时区里,一切都是准时的。

BlockSpare — News, Magazine and Blog Addons for (Gutenberg) Block Editor