react-native - react-native flatlist 不重新渲染
问题描述
有趣的是这个。
我的平面列表在 iOS 上重新呈现,但不是在 android 上。也就是说 - 当我点击一个项目时,平面列表会呈现和更改,正如我对我的代码所期望的那样。
平面列表代码:
<FlatList
data={this.state.languageDataSource}
extraData={this.state.refresh}
renderItem={({ item, index }) =>
<View>
{(Platform.OS === 'android') ?
<TouchableNativeFeedback onPress={() => this._onPress(item)} background={TouchableNativeFeedback.SelectableBackground()} >
<View>
<MenuItem
item={item}
english={this.state.english}
navigation={this.props.navigation}
generateTestHook={this.props.generateTestHook.bind(this)}
/>
</View>
</TouchableNativeFeedback>
:
<TouchableHighlight
onPress={() => this._onPress(item)}
underlayColor='gray'>
<MenuItem
item={item}
english={this.state.english}
navigation={this.props.navigation}
generateTestHook={this.props.generateTestHook.bind(this)}
/>
</TouchableHighlight>
}
</View>
}
keyExtractor={(item, index) => index.toString()}
/>
当我们点击我们得到
_onGPSPress = (_click) => {
this.state.gpsDataSource.forEach(element => {
if (element.code == _click.code) { element.selected = true } else { element.selected = false; this.setState({
refresh: !this.state.refresh
}) }
});
this.setState({
refresh: !this.state.refresh
})
//Todo: appropriate server calls
}
并且似乎在记录 setstate 不起作用。有任何想法吗?
更新:
这与我为数据源设置状态的方式有关:
gpsDataSource: [
{ selected: false, title: I18n.t('Settings_precise_11f271'), code: 'precise' },
{ selected: true, title: I18n.t('Settings_approximate_b23bbf'), code: 'approximate' },
{ selected: false, title: I18n.t('Settings_off_810357'), code: 'off' },
]
那么如何设置单个“选定”布尔值?
解决方案
如果您觉得 setState 有问题,请尝试以下代码:
this.setState(prevState => ({
refresh: !prevState.refresh
}));
推荐阅读
- angular - 将 api 请求中的 HTML 字符串转换为 HTML 标记 Angular
- css - 有没有办法翻转智能电视,使应用程序显示垂直?
- python - 从 python 格式化为 csv
- java - 如何更改 ActionListener 的焦点 JButton 的默认键绑定?
- node.js - 如何在没有 process.env 的情况下获取环境变量
- android - 如何在每个新页面上创建可单击的 ListView 并在单击时打开 JSON 数据?
- apache-spark - 拆分RDD字符串并在一个语句中与其他RDD元素组合
- php - 如何验证输入是否为数字
- angular - 知道从哪个 html 调用组件
- json - 如何在 Azure Logic App 中从 blob json 创建 html 表