Rematch Immer

给 Rematch 使用的 Immer 插件。在 immer 库上提供不可变能力。

安装

npm install @rematch/immer

针对 @rematch/core@0.x 使用 @rematch/immer@0.1.0

设置

import immerPlugin from '@rematch/immer'
import { init } from '@rematch/core'

const immer = immerPlugin()

init({
  plugins: [immer]
})

用法

使用Immer插件,reducer可以使用mutable方法来实现不可变状态。 例如:

const todo = {
  state: [{
    todo: "Learn typescript",
    done: true
  }, {
    todo: "Try immer",
    done: false
  }],
  reducers: {
    done(state) {
      state.push({todo: "Tweet about it"})
      state[1].done = true
      return state
    }
  }
};

在 Immer 中,reducer 执行突变以实现下一个不可变状态。 请记住,Immer 只支持对普通对象和数组的变化检测,所以像字符串或数字这样的原始值总是会返回一个变化。 例如:

const count = {
  state: 0,
  reducers: {
    add(state) {
      state += 1
      return state
    }
  }
};

我向开发人员建议,reducer 可以随时返回变值。

Last updated