首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个reducer中调度多个操作或侦听多个操作

问在单个reducer中调度多个操作或侦听多个操作
EN

Stack Overflow用户
提问于 2020-12-29 14:00:15
回答 1查看 215关注 0票数 0

我不确定这是基于意见,还是实际上有一个最佳实践,但它是这样的:

我需要从一个操作中更新几个数据,我正处于这样的两难境地:我可以在一个reducer中监听来自多个文件的操作,或者一旦一个操作完成,我可以分派几个操作,每个操作将由不同的reducer监听。

就我对redux的了解而言,在一个reducer中监听来自多个文件的操作可能会导致一个臃肿的reducer,这不是使用redux的最佳方式。不过,我不确定分派几个操作是否更好。下面是一个示例:

代码语言:javascript
复制
---------First way:
actions/foo.js

export const doSomething = (data) => {
  return(dispatch) => {
    dispatch({type: DO_SOME_THING, payload: data})
  }
}

reducers/foo.js
case FOO_ACTIONS.DO_SOME_THING:
return {...state, data: action.payload}

reducers/bar.js
case FOO_ACTIONS.DO_SOME_THING:
return {...state, fooData:action.payload}

这就是我听到来自多个reducers的相同动作的地方。或者,第二种方式:

代码语言:javascript
复制
---------Second way:
actions/foo.js

export const doSomething = (data) => {
      return(dispatch) => {
        dispatch({type: DO_SOME_THING, payload: data})
        dispatch({type: DO_SOME_THING_FOR_BAR, payload:data})
      }
    }
    
reducers/foo.js
case FOO_ACTIONS.DO_SOME_THING:
return {...state, data: action.payload}

reducers/bar.js
case FOO_ACTIONS.DO_SOME_THING_FOR_BAR:
return {...state, fooData: action.payload}

两种方法中的一种被认为是最佳实践吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 18:01:08

redux风格指南指出你应该使用allow Many Reducers to Respond to the Same Action。

因此,发送一个操作并在多个reducers中对其进行反应。这让你写的动作更像是“描述事件”而不是"setter动作“(这也是推荐的,请阅读整个风格指南!)此外,根据环境的不同,React可能会在每次分派后重新呈现,因此分派两次可能会重新呈现某些组件两次-这也是您可能希望避免的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65487932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档