Передав extraData = {this.state} в FlatList
, мы обеспечиваем повторную визуализацию самого FlatList при изменении state.selected. Без установки этого реквизита FlatList не знал бы, что ему нужно повторно визуализировать какие-либо элементы, поскольку он также является PureComponent, и сравнение реквизитов не покажет никаких изменений.
<FlatList
data={this.props.data}
extraData={this.state}
keyExtractor={this._keyExtractor}
renderItem={this._renderItem}
/>
Это PureComponent, что означает, что он не будет повторно визуализироваться, если реквизит остается мелко-равным.
Убедитесь, что все, от чего зависит ваша функция renderItem, передается как реквизит (например, extraData), который не === после обновлений, иначе ваш пользовательский интерфейс может не обновляться при изменениях.
Это включает в себя реквизит данных и состояние родительского компонента.
Подробнее: - FlatList