我需要帮助设计一个简单的应用程序,允许用户使用表单对视频进行评级。我的状态由2个减速器组成,一个用于保存所有可录制视频的数据(以标准化方式),另一个用于保存表单状态:
{
videos: {
'video1Id': { id: 'video1Id', title: 'Cat video', duration: 120, ... },
'video2Id': { ... },
...
},
rateForm: {
'videoId': 'video1Id'
'userComment: 'A nice video about cat'
'formSubmitted': false
...
}
}
请注意,在rateForm里面,我引用视频ID而不是视频对象。问题是,如何从我的rateForm reducer中检索整个视频对象?
我觉得我正在遵循Redux设计的最佳实践,但我坚持使用这个非常简单的用例。任何帮助表示赞赏。
由于
答案 0 :(得分:1)
有一点需要记住,减速机应该简单易行。仅在reducer级别上执行原子操作。从我可以告诉你试图在你的reducer中检索整个视频对象听起来不对。
根据您的需要,通常情况下,如果您只想对其进行评论或评分,则无需获取整个视频对象。但是,如果你100%确定你必须这样做,那么你的行动就是一个好地方。使用Redux-Thunk
,您可以在返回thunk之前访问整个状态对象。实施例
function doSomethingToVideo (videoId, something) {
return (dispatch, getState) => {
const video = getState().videos[videoId]
// Do what ever
return somethingElse
}
}
参考:Redux作者对类似问题的回答。