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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |