【发布时间】:2019-01-01 00:56:12
【问题描述】:
这是我对 Redux 不了解的地方。我有一个通过项目的应用程序。您可以转到上一项和下一项。据我了解,您不应该在您的操作中访问当前状态。
关于我的应用程序,我的 redux 状态中有一个数组,其中包含我的项目的所有 id:["3123123123","1231414151","15315415", etc.] 并且我有一个包含 currently selected item 的状态(或者更好的是,它包含 id 该项目)。现在当用户点击nextItem 时,我需要获取下一项。我的(未完成的)操作如下所示:
export function nextItem(currentId) {
//my idea:
//take the currentId, look where in the array it is, and get the position
//increment that position
//get the id of the next item in the array (at position: position+1)
//update state
return {
type: SET_CURRENT_ITEM,
payload: item
}
}
类似的事情也适用于之前的项目动作创建者。但是,我不知道如何在不访问我当前状态的情况下实现这个动作创建者?理想情况下会在哪里以及如何发生?
【问题讨论】:
-
实际上动作创建者不应该做任何事情。它应该由参考当前状态的减速器完成。操作应该类似于“SET_NEXT_ITEM”
-
你可以在redux中存储当前项目的索引
-
@JoaozitoPolo 我可以这样做,但这是否意味着在我的状态中引入冗余,因为我可以通过检查数组中的哪个位置找到所需的 id 来推导/计算索引?
-
@R.Kohlisch 我同意...我也不喜欢“索引”的想法...您可以使用 .findIndex() 在渲染或函数中查找索引
标签: javascript reactjs react-native react-redux flux