FlatList React Native 与 Redux 优化
FlatList React Native with Redux Optimization
我最近看到一篇文章,内容是关于确保在将 FlatList 与 redux 结合使用时,你的 data
应该是可变的。通常在 Redux 中(正如它所说)我将状态视为不可变的并且 return 在我的 reducer 中有一个新的更新副本。
所以我找到的文章是 Redux 建议的反模式。虽然它说这样做是因为 FlatList 的性质是 VirtualizedList
。
所以我的问题是:"Should I be mutating data in redux that will be used in a FlatList / VirtualizedList"?
而不是像这样做:
case FETCH_POSTS:
return {
posts: [...state.posts, ...action.newPosts]
}
我应该做的:
case FETCH_POSTS:
action.newPosts.forEach((post) => state.posts.push(post))
return
我反对。正如您提到的,它是一种反模式 it is for good reasons。因此,我最近在我们的应用程序中遇到了一个错误。它不仅可能是错误的原因,而且很难找到它们。
React Native 文档说你应该在处理不可变数据时使用 VirtualizedList
。
也许您可以尝试一种混合方法,从存储中获取新状态,然后手动改变 FlatList
.
的状态
我最近看到一篇文章,内容是关于确保在将 FlatList 与 redux 结合使用时,你的 data
应该是可变的。通常在 Redux 中(正如它所说)我将状态视为不可变的并且 return 在我的 reducer 中有一个新的更新副本。
所以我找到的文章是 Redux 建议的反模式。虽然它说这样做是因为 FlatList 的性质是 VirtualizedList
。
所以我的问题是:"Should I be mutating data in redux that will be used in a FlatList / VirtualizedList"?
而不是像这样做:
case FETCH_POSTS:
return {
posts: [...state.posts, ...action.newPosts]
}
我应该做的:
case FETCH_POSTS:
action.newPosts.forEach((post) => state.posts.push(post))
return
我反对。正如您提到的,它是一种反模式 it is for good reasons。因此,我最近在我们的应用程序中遇到了一个错误。它不仅可能是错误的原因,而且很难找到它们。
React Native 文档说你应该在处理不可变数据时使用 VirtualizedList
。
也许您可以尝试一种混合方法,从存储中获取新状态,然后手动改变 FlatList
.