如何在 reducer 之间共享 state?

简介: 如何在 reducer 之间共享 state?

如何在 reducer 之间共享 state?

 combineReducers(reducers)

reducers (Object): 一个对象,它的值(value)对应不同的 reducer 函数,这些 reducer 函数后面会被合并成一个。

随着应用变得越来越复杂,可以考虑将 reducer 函数拆分成多个单独的函数,拆分后的每个函数负责独立管理 state 的一部分。

rootReducer = combineReducers({potato: potatoReducer, tomato: tomatoReducer})
// rootReducer 将返回如下的 state 对象
{
  potato: {
    // 由 potatoReducer 管理的 state 对象 ...
  },
  tomato: {
    // 由 tomatoReducer 管理的 state 对象 ...
  }
}

那么问题来了,将 reducer 函数拆分成多个单独的函数,reducer 之间无法共享 state 怎么办呢?(由 potatoReducer 管理的 state 对象与由 tomatoReducer 管理的 state 对象,无法获取对方的 state 值)。首先最简单的办法是不要将 reducer 函数拆分成多个单独的函数,而是只使用一个 reducer 函数,就不会出现这个问题了。

标准的做法是使用 Redux Thunk 中间件。要引入 redux-thunk 这个专门的库才能使用。在 redux-thunk 的 异步 action 创建函数能通过 getState() 方法获取所有的 state。

export function fetchPostsIfNeeded(subreddit) {
  // 注意这个函数也接收了 getState() 方法
  // 它让你选择接下来 dispatch 什么。

  return (dispatch, getState) => {
    // todo...
  }
}

只需牢记 reducer 仅仅是函数,可以随心所欲的进行划分和组合,而且也推荐将其分解成更小、可复用的函数。

相关文章
|
7月前
|
人工智能
0元打造520浪漫神器,用CodeBuddy生成专属爱情故事书
520即将到来,还在为挑选礼物发愁吗?想送特别的又预算有限?试试用CodeBuddy打造0成本、情感满分的浪漫礼物!只需简单指令,无需写代码,即可生成专属你们的爱情故事书。输入名字与相识时间,自动生成温馨网页或PDF,支持私密链接保存、打印成册,甚至嵌入音乐照片。CodeBuddy作为AI开发搭档,助你将回忆化为独特惊喜,让科技书写动人情话。今年520,用心意与创意打动对方!
|
存储 Kubernetes 调度
【赵渝强老师】K8s中Deployment控制器与StatefulSet控制器的区别
K8s中的Deployment控制器用于管理无状态应用程序,关注Pod数量、更新方式等;而StatefulSets控制器则管理有状态应用程序,提供持久存储和唯一标识符,适用于需要稳定网络标识符和持久化存储的场景。两者的主要区别在于是否维护状态和顺序。
432 0
|
Kubernetes 应用服务中间件 nginx
Kubernetes(k8s)容器编排Pod介绍和使用
Kubernetes(k8s)容器编排Pod介绍和使用
544 0
win10取消ie浏览器自动跳转edge浏览器
win10取消ie浏览器自动跳转edge浏览器
452 4
|
JSON 数据挖掘 数据格式
Pandas处理JSON文件read_json()一文详解+代码展示
Pandas处理JSON文件read_json()一文详解+代码展示
2093 0
Pandas处理JSON文件read_json()一文详解+代码展示
|
安全 Java 数据安全/隐私保护
如何解决security中异常UsernameNotFoundException总是抛出密码错误问题
如何解决security中异常UsernameNotFoundException总是抛出密码错误问题
535 0
使用vant制作一个视频播放的功能
使用vant制作一个视频播放的功能
394 0
|
JavaScript 前端开发
介绍npm模块的安装机制,为什么输入npm install 就可以自动安装对应的模块?如何初始化?
介绍npm模块的安装机制,为什么输入npm install 就可以自动安装对应的模块?如何初始化?
312 0
|
Java 应用服务中间件 Maven
框架的优点(SpringBoot VS Servlet)
框架的优点(SpringBoot VS Servlet)