0

我需要帮助设计一个允许用户使用表单对视频进行评分的简单应用程序。我的状态由 2 个 reducer 组成,一个包含所有可评级视频的数据(以标准化方式),另一个包含表单状态:

{
  videos: {
    'video1Id': { id: 'video1Id', title: 'Cat video', duration: 120, ... },
    'video2Id': { ... },
    ...
  },
  rateForm: {
    'videoId': 'video1Id'
    'userComment: 'A nice video about cat'
    'formSubmitted': false
    ...
  }
}

请注意,在 rateForm 中,我引用的是视频 ID 而不是视频对象。问题是,如何从我的 rateForm 减速器中检索整个视频对象?

我觉得我正在遵循 Redux 设计的最佳实践,但我被这个非常简单的用例所困。任何帮助表示赞赏。

谢谢

4

1 回答 1

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 作者对类似问题的回答。

在动作创建者中访问 Redux 状态?

于 2017-04-25T17:41:38.147 回答