简而言之,我一直在关注here找到的教程。
这是有道理的并且它有效,但是,我无法理解为什么需要为FlatList
组件分配一个状态所关联的prop
以便在状态时重新呈现它变化。如果我根据示例省略extraData
道具,则FlatList
不会重新渲染。我认为setState()
应该重新渲染一个组件及其所有子组件,但在这种情况下它并不存在:我在这里遗漏了什么吗?
谢谢。
答案 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
道具。