为什么大户型清单比较慢?如何使用shouldComponentUpdate?

问题描述 投票:0回答:1

我只想确认我拥有此权利。

我的理解是,在无pureComponent的react native中的长平面列表将更新列表中每个对象的状态。因此,如果您有一个水平的平面列表:

array = [A, B, C, D, E]

with a horizontal flatlist rendered to look like:

A | B | C | D | E

然后,即使A-D的状态没有任何变化,但E页中的任何事情发生了变化,每个页面也会被更新。

[我的理解是,PureComponent通过对数组进行浅层比较以查看是否有任何更改来解决此问题,并且仅当发生更改时,例如E变成F,然后才更新特定页面。

如果这是正确的,那么您如何克服对嵌套数组的深刻更改?

例如:

array = [ [1,2,3], [4,5,6], [7,8,9] ]

在上述情况下,如果我将array [2] [2]更改为10而不是9,PureComponent将忽略它,因为它仅进行浅层比较。所以我现在在我的应用程序中执行的是this.forceUpdate(),但我认为这会导致每个页面的重新呈现。那么如何在没有forceUpdate的情况下使用PureComponent?我认为这是通过shouldComponentUpdate进行的,但它是idk。请记住,除了嵌套数组,我无法将数据结构更改为其他内容。

reactjs react-native
1个回答
0
投票

最好附上代码。

对于平板列表性能,您必须分页数据,并且随着用户滚动,您可以向其提供更多数据

用于更新平面列表,请为其分配this.state并将其数据更新为平面列表成员。

<FlatList
extraData={this.state}
/>

如果您将FlatComponent用作PureComponent,则它可能不会更新。我个人发送过事件以仅更新特定成员,以减少所需的更新过程,但是为了快速解决,您可以将项目设置为Component。

© www.soinside.com 2019 - 2024. All rights reserved.