Model

Model 是 Rematch 中的概念,主要用来简化 Redux,它将 Reducer, Action 放到了一起形成了 model 概念,并移除了定义起来非常繁琐鸡肋的 type。且内部支持异步功能,不需要引入 redux-thunk

在 store 定义的时候不需要手动去加载Redux Devtools,Rematch具有开箱即用的Redux Devtools。不需要配置。详情见:https://rematch.gitbook.io/handbook/ji-qiao/untitled

需要注意的是 effect 的函数定义:

effects: { [string]: (payload, rootState) }

例如:

{
  effects: {
    logState(payload, rootState) {
      console.log(rootState)
    }
  }
}

rootState 其实就相当于 getState 用来获取当前状态树的所有状态。注意它是在第二个参数,当该函数需要传多个参数的时候,可以将它们封装在一个对象里面作为 payload。

采用 model 的方式,可以直接进行链式 dispatch,这将移除以前 dispatch 时对action 函数的引入。例如:

import { dispatch } from '@rematch/core'

// old
dispatch({ type: 'count/increment', payload: 1 }) // or maybe action function
// new
dispatch.count.increment(1)

更多请参考 Rematch 的使用文档:https://rematch.gitbook.io/handbook/

Last updated