小编par*_*y28的帖子

FlatList renderItem 被多次调用

我在做什么 ?

尝试根据存储在state.data. 有一个按钮,按下后会在 中附加一个新项目state.data

问题是什么 ?

按下按钮后,我希望 renderItem 仅被调用state.data.length次数,而它被调用2*state.data.length次数。此外,这种 2x 行为并不总是一致的,并且会随着state.data.length增加而变化。

例如: when state.data.length=3,然后在初始渲染时,renderItem 被调用的次数正好是 3 次,这state.data与按下按钮时的项目数相同,按钮将新项目附加到state.datanowstate.data.length=4并且 renderItem 被调用 8 次,即2*state.data.length次数。

但是,当state.data.length=11,然后在初始渲染时,renderItem 被精确调用 21 次,并且在按下将新项目附加到state.data现在的按钮时,state.data.length=12renderItem 被调用 23 次,这偏离了2*state.data.length行为。

在此处输入图片说明

我在期待什么?

renderItem 仅state.data.length在初始和后续渲染中被调用的次数。

我试过什么?

  1. 从头开始创建一个新项目来测试这种行为,但没有运气。
  2. 在 renderItem PureComponent 中制作组件。仍然与提到的行为相同。
  3. https://codesandbox.io/s/react-native-nn73t 上使用 react-native-web制作了一个 CodeSandbox,其行为与以前相同。请参阅此沙箱以获取代码。
  4. 使用诸如 maxToRenderPerBatch、initialNumsToRender 等道具但也无济于事。虽然使用相对较大的它们state.data确实会减少调用 renderItem 的次数,但仍然没有那么大的减少。 …

react-native

6
推荐指数
1
解决办法
2748
查看次数

标签 统计

react-native ×1