React Native:setState()不会重新呈现FlatList子组件

时间:2017-11-16 14:15:15

标签: reactjs react-native

简而言之,我一直在关注here找到的教程。

这是有道理的并且它有效,但是,我无法理解为什么需要为FlatList组件分配一个状态所关联的prop以便在状态时重新呈现它变化。如果我根据示例省略extraData道具,则FlatList不会重新渲染。我认为setState()应该重新渲染一个组件及其所有子组件,但在这种情况下它并不存在:我在这里遗漏了什么吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

如果您查看此页面https://facebook.github.io/react-native/docs/flatlist.html

你可以看到他们正在设置state.selected,但是我不能看到你/他在那个教程中正在这样做,也许是没有设置为属性的this.state.selected?

我认为您需要在selected方法中添加onSelectItem()状态,如下所示:

onSelectItem: (item) => {
    console.log('onSelectItem ', item);
    this.setState({
        selected: item
    });
},

答案 1 :(得分:1)

在仔细阅读documentation for the FlatList组件(感谢,@Lucas Reppe Welander)之后,已经发现FlatList不是常规组件,但它实际上是PureComponent。这意味着即使父组件的状态发生变化,FlatList"道具比较也不会显示任何变化",因为PureComponent&#34 ;使用浅支柱和状态比较实现shouldComponentUpdate()"。我不完全确定这会带来多大的复杂性,但这足以让我理解为什么我需要在这个例子中使用extraData道具。

相关问题