Javascript 反模式:在Reducer中访问状态?如何处理相互依赖的减速器?

Javascript 反模式:在Reducer中访问状态?如何处理相互依赖的减速器?,javascript,reactjs,redux,react-redux,flux,Javascript,Reactjs,Redux,React Redux,Flux,我已经在好几个地方读到,访问action creators中的状态是一种反模式 通常,访问action creators中的状态是一种反模式和 如果可能的话,你应该避免这样做 我最近发现自己处于以下情况。我有两个减速机: 当前用户: { currentUserId: 'abc' } 诱惑者 { byId: { { abc: { name: "John" age: 21 } def: { name:

我已经在好几个地方读到,访问action creators中的状态是一种反模式

通常,访问action creators中的状态是一种反模式和 如果可能的话,你应该避免这样做

我最近发现自己处于以下情况。我有两个减速机:

当前用户:

{ 
  currentUserId: 'abc'
}
诱惑者

{ 
  byId: {
  {
   abc: {
         name: "John"
         age: 21
        }
   def: {
         name: "Dave"
         age: 51
        }
   ghi: {
         name: "Gunners"
         age: 98
        }
  }
},
  allIds : ['abc','def','ghi'] //this is a list; users have a certain order, that is preserved here
}
byId/allIds
结构也是我从

现在,我想发布以下操作:

export const getNextActiveUser = () => {
  return {
    type: "NEXT_USER"
  };
};
嗯,我需要将
currentUserId
更新为
def
。但只有在
allid
中找到
abc
的位置并增加索引,才能获得
def
。只有这样,我才能更新我的其他减速器


我不知道如何在不访问我的action creator中的状态的情况下执行此操作。有什么建议吗?

我认为这里的理念是让真正可重用的“纯”动作创建者只依赖于参数,而不依赖于状态。但是,您可以访问状态并从中获取内容,然后将其作为参数传递给动作创建者,但这是特定于应用程序的行为,而不是动作创建者应该知道的。您可以很容易地将其包装到助手函数中,这些函数是“UI”的一部分,而不是应用程序的“状态”部分。