React-Native Flatlist不刷新数据

时间:2018-12-05 19:29:16

标签: react-native react-native-flatlist

我正尝试使用以下代码将数据动态添加到我的平面列表中:

import React, { Component } from 'react';
import { View, Text,FlatList,Button,Alert} from 'react-native';

export default class Lista extends Component {
  constructor(props) {
    super(props);
    this.state = {dados: [
      {key:"valeu 1"},
      {key:"value 2"}
    ],
    refresh : false
    };
  }

  adicionar(){
    this.state.dados.push({key:"value 3"})
    this.state.refresh = !this.state.refresh

  }

  render() {

    return (
      <View>
        <FlatList
        data= {this.state.dados}
        extraData = {this.state.refresh}
        renderItem={({item}) => <Text>{item.key}</Text>}
        />
        <Button title="Adicionar"
            onPress={this.adicionar.bind(this)}>      
        </Button>
      </View>
    );
  }
}

我可以使用this.state.dados.push({key:"value 3"})将数据推送到“ dados”对象,但是当我将this.state.refresh变量切换为true时,我的Flatlist不会呈现最后一个值。

预先感谢

3 个答案:

答案 0 :(得分:0)

永远不要直接改变状态。尝试调用this.setState()函数以执行更好的应用程序开发。这可能是未重新呈现Flatlist的原因。

adicionar(){
    const { refresh, dados } = this.state;
    this.setState({
      dados: [...dados, {key:"value 3"}], //that is a better way to update Array-States
      refresh: !refresh
    })
}

答案 1 :(得分:0)

请将extraData = {this.state.refresh}替换为extraData = {this.state}

答案 2 :(得分:-1)

要更新状态值,请始终使用 setState 方法。

adicionar(){
    this.setState(prevState => ({
      dados: [...prevState.dados, {key:"value 3"}],
      refresh: !prevState.refresh
    })
    )
}