Javascript 反模式:在Reducer中访问状态?如何处理相互依赖的减速器?
我已经在好几个地方读到,访问action creators中的状态是一种反模式 通常,访问action creators中的状态是一种反模式和 如果可能的话,你应该避免这样做 我最近发现自己处于以下情况。我有两个减速机: 当前用户: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:
{
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”的一部分,而不是应用程序的“状态”部分。