这更多是关于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状态并将其传递回去。
答案 0 :(得分:0)
找到了解决方案: 尽管无限滚动功能使组件具有相同的道具(页面,currentPage,isLoading等),但组件实际上并没有共享相同的状态(帖子,相册和个人资料都不同)。
需要将无限滚动功能转换为util函数,以在需要它的不同组件之间使用。本地状态比redux存储更合适。