首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React-native Flatlist不刷新数据

React-native Flatlist不刷新数据
EN

Stack Overflow用户
提问于 2018-12-06 03:29:16
回答 2查看 1.4K关注 0票数 0

我试着用下面的代码将数据动态地添加到我的平面列表中:

代码语言:javascript
运行
复制
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不会呈现最后一个值。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-06 04:44:56

你不应该直接改变状态。尝试调用this.setState()函数,以便执行更好的应用程序开发。这可能是为什么Flatlist没有被重新渲染的原因。

代码语言:javascript
运行
复制
adicionar(){
    const { refresh, dados } = this.state;
    this.setState({
      dados: [...dados, {key:"value 3"}], //that is a better way to update Array-States
      refresh: !refresh
    })
}
票数 0
EN

Stack Overflow用户

发布于 2018-12-07 13:56:40

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53639449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档