react-native – 更新this.state.dataSource不会更新ListView

前端之家收集整理的这篇文章主要介绍了react-native – 更新this.state.dataSource不会更新ListView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ListView像:
<ListView
      dataSource={this.state.dataSource}
      renderRow={this.renderMovie}
      style={styles.listView}
/>

显示如下行:

<View style={styles.container}>
      <TouchableHighlight onPress={this._onPressButton.bind(this,movie)}>

        <Image
          source={{uri: movie.uri}}
          style={styles.thumbnail}
        />
    </TouchableHighlight>
    <View style={styles.rightContainer}>
      <Text style={styles.title}>{movie.id}</Text>
      <Text style={styles.year}>{movie.votes}</Text>
    </View>
  </View>

我有一个功能,更新this.state.dataSource与电影“票”的数量.但是这些更改不会在UI中反映出来,但是当我记录了this.state.dataSource时,更改就在这里.我需要以某种方式重新渲染行吗?他们不应该自动改变吗?

谢谢!

要使React-native重新渲染行,您需要创建一个数组的副本,更新对象,然后使用setState与新创建的数组.例如:
let newArray = this.state.dataSource.slice();
newArray[indexToUpdate] = {
  ...this.state.dataSource[indexToUpdate],field: newValue,};
this.setState({
  dataSource: this.state.dataSource.cloneWithRows(newArray),});

参考:

> React-Native Updating List View DataSource
> ListView does not re-render a row when property of an object in datasource array is changed #4104

猜你在找的React相关文章