Плоский список, не отображаемый повторно при изменении состояния

#javascript #reactjs #react-native #react-native-flatlist

#javascript #reactjs #react-native #react-native-плоский список

Вопрос:

У меня есть плоский список, и он не отображается повторно при изменении состояния. Как мне получить плоский список для повторного использования?

  _renderItem = ({item}) => {
    if(item=='null'){
      return <Text>Item is null</Text>
    }else{
      return <Text>Item is not null</Text>
    }    
};

render(){
 return(
  <FlatList
   data={this.state.itemList}   
   renderItem={this._renderItem}      
  />

 )
}
  

Комментарии:

1. Вы уверены, что происходит изменение состояния? Вы можете показать этот код?

2. Не забывайте, что null это не то же самое, что 'null'

3. Да, я понимаю, что null — это не то же самое, что null, и состояние задается следующим образом.setState({ItemList: array})

Ответ №1:

Измените свой код на этот:

 render(){
  return(
    <FlatList
      data={this.state.itemList}   
      extraData={this.state}
      renderItem={this._renderItem}      
    />
  )
}
  

Компоненту FlatList необходимо, чтобы ExtraData был установлен в this.state, чтобы он обновлялся при изменении.

Смотрите документацию для получения более подробной информации: https://facebook.github.io/react-native/docs/flatlist.html

Комментарии:

1. Пожалуйста, объясните в своем ответе, что вы изменили и почему это решает проблему 🙂

2. Спасибо, но все равно не сработало, когда я поместил _renderItem сверху.

3. Да, я поместил это как над методом рендеринга, так и над методом возврата.

4. В моем случае ExtraData уже находится выше renderItem, но не работает. Не могли бы вы подсказать мне возможное решение, пожалуйста?