为什么 FlatList 在 React Native 中没有动态更新

2024-01-20

我对原生反应很陌生,我正在尝试动态更新列表。

下面是我的代码:

import React, { Component } from "react";
import { View, Text, StyleSheet, FlatList } from "react-native";
import { Tile, ListItem, List } from "react-native-elements";


export default class JoinSession extends Component {

    constructor() {
        super();

        this.state = {
            dataToRender: [{ "id": "0", "name": "name0", "des": "des0" }]
        }
    }

    componentDidMount() {   
        var counter = 0;
        const interval = setInterval(() => {
            try {
                var temp = {
                    "id": ++counter + "",
                    "name": "name" + counter,
                    "des": "des" + counter
                }

                let tempArray = this.state.dataToRender;
                tempArray.push(temp);

                this.setState({
                    dataToRender: tempArray
                });

                console.log(this.state.dataToRender);

                if(counter === 10) {
                    clearInterval(interval);
                }
            } catch (e) {
                console.log(e.message);
            }
        }, 2000);
    }

    renderList(item) {
        console.log(item);

        return (
            <ListItem
                roundAvatar
                title={item.name}
                subtitle={item.des}
            />
        );
    }

    render() {
        return (
            <View style={{ flex: 1, alignItems: "stretch", backgroundColor: "skyblue" }}>
                <List>

                    <FlatList
                        data={this.state.dataToRender}
                        renderItem={({ item }) => this.renderList(item)}
                        keyExtractor={item => item.id}
                    />
                </List>
            </View>
        );
    }
}

我只能获取我在构造函数中声明的第一个元素,但我在 serInterval 中附加的数据没有显示在页面上。

请帮我解决这个问题,或者如果有其他方法,请告诉我。

提前致谢。


您好,尝试查看一下可以在 FlatList 上使用的 extraData 参数:

通过传递extraData={this.state}对于 FlatList,我们确保 FlatList 本身会在 state.selected 更改时重新渲染。如果不设置此 prop,FlatList 将不知道它需要重新渲染任何项目,因为它也是一个 PureComponent,并且 prop 比较不会显示任何更改。

<FlatList
 ...
 extraData={this.state}
/>

有关 FlatList 文档的更多信息:https://facebook.github.io/react-native/docs/flatlist.html https://facebook.github.io/react-native/docs/flatlist.html

另外你不应该需要这个<List>从反应本机元素这里列表行为完全由您的 FlatList 处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 FlatList 在 React Native 中没有动态更新 的相关文章

随机推荐

  • 如何显示eclipse项目类型

    在 Eclipse IDE 中 有图标显示项目类型 但我找不到文字描述 我希望右键单击 gt 属性来显示此信息 但根据此所有项目都是 项目 类型 即使它们是 java 项目或 Maven 项目等 有人知道吗 Thanks 根据 您不会在 E
  • 如何使用 TELETHON 按日期获取消息?

    如何获取今天发布的消息TELETHON 我正在使用下面的代码 date of post datetime datetime 2019 12 24 with TelegramClient name api id api hash as cli
  • 如何优化 R 中词干提取和拼写检查的性能?

    我有大约 1 400 万个文档 每个文档的平均字符数为 中位数 250 和平均值 470 我想在对它们进行分类之前执行拼写检查和词干提取 模拟文档 sentence lt We aree drivng as fast as we drove
  • WPF 4:DataGridColumnHeader 发生了什么?

    DataGridColumnHeader 发生了什么 看起来当 DataGrid 移至PresentationFramework 时它已被删除 DataGridColumnHeader http msdn microsoft com en
  • 汇编程序如何将 x86 指令助记符映射到二进制机器指令?

    我对编写 x86 汇编程序感兴趣 我想知道将 x86 汇编助记符指令 使用类似 Intel 的语法 映射到相应的二进制机器代码指令的好方法是什么 您想了解助记符到机器代码的物理映射吗 如果是这样 则第 2A 卷和第 2B 卷英特尔 IA32
  • 我可以将字符串映射到java中的方法吗?

    我正在用 Java 编写一个表达式计算器 我希望能够添加更多运算符 我目前只有 和 目前 我的代码如下所示 case return a b case return a b case return a b 这适用于我的代码 因为我只有几个运算
  • git 可以提交新的非空文件的“空版本”吗?

    git 可以提交某些文件的空版本吗 恰当的例子是 我需要首先添加新的 未跟踪的 非空文件并提交为empty文件 以便将其内容标记为新内容并进行审查 完整的 未跟踪的文件应not被添加到索引中 git diff应通过将文件与其提交的空版本进行
  • Facebook 页面默认登陆选项卡

    我有一个 Facebook 页面 我将默认登录页面设置为自定义选项卡 如果用户不喜欢该页面 这很有效 如果用户喜欢该页面 则登陆页面始终是墙 有什么方法可以确保您的自定义选项卡始终是登录页面 无论用户是否喜欢您的页面 Example htt
  • Jquery Select2 插件版本检查

    在我的项目中 我检查 Select2 插件是否以这种方式加载 if jQuery select2 但现在我将尝试验证加载了 Select2 插件的版本 3 5 X 或 4 X 我想也许你可以检查一下 4 X 版本中引入的选项 功能是否在 3
  • 从包内加载mathematica包

    我或多或少有以下设置 在 path to my packages我有两个包裹package1 m and package2 m 每个包的概要如下 BeginPackage package1 Unprotect Names package1
  • numpy.linalg.inv 如何计算正交矩阵的逆?

    我正在实施一个LinearTransformation类 继承自numpy matrix和用途numpy matrix I计算变换矩阵的逆 有谁知道 numpy 在尝试计算逆矩阵之前是否检查矩阵的正交性 我问这个问题是因为我的大多数矩阵 但
  • 使用 pandas df.plot 在子图上绘制多条线

    有没有一种方法可以在一个图上绘制多个数据框列 并为数据框绘制多个子图 例如 如果 df 有 12 个数据列 则在子图 1 上绘制第 1 3 列 子图 2 第 4 6 列等 我了解如何使用 df plot 为每一列创建一个子图 但不确定如何按
  • 在django中将图像和缩略图存储在s3上

    我正在尝试使用 django storages boto 和 sorl thumbnail 将图像缩略图存储在 s3 上 我可以使用它 但是即使图像很小 速度也很慢 我不介意当我保存表单并将图像上传到 s3 时速度很慢 但我希望它在那之后能
  • Spring JdbcTemplate 错误处理批量更新

    我正在尝试使用batchUpdate 更新表中的数千行 我的要求是 1 假设一个批次有1000条记录 235 号记录导致错误 如何找出导致错误的记录 2 假设记录 600 没有导致更新 原因可能是没有记录匹配 where 子句 如何找出未更
  • 为什么我的 bash 提示符没有更新?

    我是 git 新手 我正在尝试将当前 git 分支添加到我已经存在的提示中 其定义如下 RESET 017 NORMAL 033 0m RED 033 31 1m YELLOW 033 33 1m WHITE 033 37 1m SMILE
  • Android 如何设置 EditText 的最大“字数”限制

    如何在 Android 上设置最大字数限制EditText我知道如何设置字符限制 但我正在寻找字数限制 您需要添加一个TextChangedListener给你的EditText然后应用一个InputFilter请参阅以下代码 edDesc
  • 通过 Maven 配置文件具有多个入口点应用程序的 Spring Boot

    我正在尝试构建一个结构原型 其中多个 SpringBootApplications 通过它们的打包命名空间进行隔离 如下所示 在 Maven 中pom xml 为了构建 我依赖于配置文件 如下所示 并进行了描述here https docs
  • Scala 是否有类似于 Java Deque 或 Python deque 的 Double Side Queue?

    Scala 是否有类似于 Java Deque 或 Python deque 的 Double Side Queue 我在 Scala 2 12 API 中只看到堆栈和队列 但只想仔细检查一下 Scala 2 13 有ArrayDeque内
  • 是否可以使用java客户端使用InProcessChannel在同一进程中调用c++服务器?

    grpc java 和 grpc c 都支持进程内通道 如果 grpc 客户端和服务器在同一进程中 则使用该通道 所以我有一个问题 是否可以使用java客户端使用进程内通道在同一进程中调用c 服务器 不会 每种语言的进程内通道都是特定于语言
  • 为什么 FlatList 在 React Native 中没有动态更新

    我对原生反应很陌生 我正在尝试动态更新列表 下面是我的代码 import React Component from react import View Text StyleSheet FlatList from react native i