React-native Flatlist не обновляет данные - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь динамически добавлять данные в мой плоский список с помощью следующего кода:

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>
    );
  }
}

Я могу отправить данные в объект "dados" с помощью this.state.dados.push({key:"value 3"}), но когда я переключаюthis.state.refresh переменная в true мой Flatlist не отображает последнее значение.

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Для обновления значения в состоянии вы всегда должны использовать метод setState .

adicionar(){
    this.setState(prevState => ({
      dados: [...prevState.dados, {key:"value 3"}],
      refresh: !prevState.refresh
    })
    )
}
0 голосов
/ 07 декабря 2018

пожалуйста, замените extraData = {this.state.refresh} на extraData = {this.state}

0 голосов
/ 05 декабря 2018

Вы никогда не должны мутировать состояние напрямую.Попробуйте вызвать функцию 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
    })
}
...