问题是,无论何时我点击ListItem
(这会从ListItem
状态数组中添加或删除selectedList
的ID,该ID用于突出显示选定的项)整个列表(及其中的每个项目)重新呈现。我只想重新渲染当时选择的项目。
我对此至少有2点困惑。首先,无论我是否将selectedList
数组传递到FlatList
的{{1}}道具中,都会发生这种重新渲染,并且我正在阅读的所有内容都在说{{1} },除非我提供extraData
道具,否则不应该知道任何更改。在下面的示例中,我没有显示FlatList
道具,因为就像我说的那样,行为对我来说是相同的。
对我来说,第二个困惑点是,即使extraData
希望在每次点击时都进行重新渲染,控制单个项目是否重新渲染的规定方法是什么?我认为我的之所以要重新渲染是因为,由于我的extraData
正在重新渲染,因此它正在为每个项目调用我的FlatList
函数,并为每个项目返回新组件。但是现在看来人们已经不再使用Flatlist
了,因为钩子已经出现了,所以我该如何比较新旧道具以选择何时渲染? (而且,我应该在哪里进行调用?在renderItem
函数中还是在shouldComponentUpdate
组件内部?)
我觉得答案就在我的两个混乱领域之间。请在下面查看我的示例代码。
renderItem