【问题标题】:React-native Flatlist not refreshing dataReact-native Flatlist 不刷新数据
【发布时间】:2018-12-05 19:29:15
【问题描述】:

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

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 不会呈现最后一个值。

提前致谢

【问题讨论】:

    标签: react-native react-native-flatlist


    【解决方案1】:

    你不应该直接改变状态。尝试调用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
        })
    }
    

    【讨论】:

    • 它正在部分工作,它只在您的解决方案中显示“值 3”。尝试切换到 const { dados, refresh} = this.state;但结果是一样的。
    • Nervermind 我没想到那些 '...' 实际上是语法的一部分。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      要更新 state 中的值,您应该始终使用 setState 方法。

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

      【讨论】:

      • 刷新它没有在那个范围内声明
      • @HelmerBarcos 刷新变量应该在状态内,因此将其移入状态
      猜你喜欢
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多