加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:52:39 所属栏目:百科 来源:网络整理
导读:我有一个ListView像: ListView dataSource={this.state.dataSource} renderRow={this.renderMovie} style={styles.listView}/ 它显示如下行: View style={styles.container} TouchableHighlight onPress={this._onPressButton.bind(this,movie)} Image sou
我有一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读