Rematch实践指南
  • 重新思考Redux
  • 目的
  • API 文档
    • @rematch/core API
    • Init Redux API
    • Plugin API
  • 技巧
    • Devtools
    • React
    • Vue
    • Testing
    • TypeScript
    • Immer
    • Decoupling reducers
  • 插件
    • Rematch Select
    • Rematch Loading
    • Rematch Persist
    • Rematch Updated
    • React Navigation
    • Rematch Immer
  • 灵感
Powered by GitBook
On this page
  • 安装
  • 设置
  • 用法
  1. 插件

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 可以随时返回变值。

PreviousReact NavigationNext灵感

Last updated 6 years ago