私は次のような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),
});
参照:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加