反应本机列表不重新呈现

时间:2018-06-22 10:35:42

标签: 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' },
      ]

那么我该如何设置单个的“选定”布尔值?

1 个答案:

答案 0 :(得分:0)

如果您觉得setState存在问题,请尝试以下代码:

this.setState(prevState => ({
    refresh: !prevState.refresh
}));