使用Redux初始化全局状态,然后让本地组件状态接管

时间:2018-10-23 09:58:16

标签: javascript reactjs redux react-redux

这更多是关于react和redux的状态设计/最佳实践问题。

我有一个应用程序,可以处理三种数据(相册,帖子,配置文件),并将它们全部呈现在具有无限滚动功能的单个组件(ScrollGrid)中。该组件从redux存储中获取一个“ context”属性,并派生一个gridContext来设置布局。

这块redux状态看起来像这样:

{ 
  context: "posts",
  pages: [[...],[...]],
  currentPage: 0,
  hasMorePages: true,
  isFetching: false,
  tabPosition: 0
}

当我的AppRouter组件第一次安装时,它会获取一些提要“发布”数据,在redux存储中设置该数据,然后将其向下传递给ScrollGrid组件。 ScrollGrid组件可以向下嵌套多个组件(并可以与它们之间的中间组件进行交互)。

我的问题是,一旦我将初始数据发送到ScrollGrid后,是否只是让ScrollGrid组件的本地状态处理该相同状态是一种好习惯,还是我应该始终更新redux存储并传递props?从那时起,我将模仿本地组件状态下的redux状态,并且仅在数据类型发生更改(例如发布到相册)时才重新初始化redux状态并将其传递回去。

1 个答案:

答案 0 :(得分:0)

找到了解决方案: 尽管无限滚动功能使组件具有相同的道具(页面,currentPage,isLoading等),但组件实际上并没有共享相同的状态(帖子,相册和个人资料都不同)。

需要将无限滚动功能转换为util函数,以在需要它的不同组件之间使用。本地状态比redux存储更合适。