【问题标题】:FlatList React Native with Redux OptimizationFlatList React Native 与 Redux 优化
【发布时间】:2020-06-16 23:59:01
【问题描述】:

我最近看到一篇关于确保在使用 FlatList 和 redux 时您的 data 应该是可变的文章。通常在 Redux 中(正如它所说),我将状态视为不可变的,并在我的 reducer 中返回一个新的更新副本。

所以我发现的文章是 Redux 建议的反模式。虽然它说这样做是因为 FlatList 的性质是VirtualizedList

所以我的问题是:“我是否应该在 Redux 中改变将在 FlatList / VirtualizedList 中使用的数据”?

而不是做类似的事情:

case FETCH_POSTS:
   return {
     posts: [...state.posts, ...action.newPosts]
   }

我应该这样做:

case FETCH_POSTS:
   action.newPosts.forEach((post) => state.posts.push(post))
   return

【问题讨论】:

    标签: react-native react-redux react-native-flatlist


    【解决方案1】:

    我建议不要这样做。正如您提到的,这是一种反模式和it is for good reasons。因为它,我最近在我们的应用程序中遇到了一个错误。它不仅可能是错误的原因,而且还很难找到它们。

    React Native 文档说在处理不可变数据时应该使用VirtualizedList

    也许您可以尝试一种混合方法,从存储中获取新状态,然后手动改变 FlatList 的状态。

    【讨论】:

    • 是的,我想我可以通过 useEffect 检查 redux 状态的变化,并有一个中间数组,其中包含我将传递给 dataFlatList 属性的可变数组。出于好奇,您将什么用于动态数据列表?你有类似的用例替代FlatList吗?
    • 就我而言,我使用SectionList 处理动态数据。到目前为止没有任何问题。也许你可以试一试,看看它是否适合你。
    猜你喜欢
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2020-11-01
    • 2018-04-05
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多