如何在 React 中循环一个对象?

2023-12-04

React 新手,尝试循环对象属性,但 React 抱怨对象不是有效的 React 子对象,有人可以给我一些关于如何解决此问题的建议吗?我已经添加了 createFragment 但不完全确定需要去哪里或者我应该采取什么方法?

JS

var tifs = {1: 'Joe', 2: 'Jane'};
var tifOptions = Object.keys(tifs).forEach(function(key) {
    return <option value={key}>{tifs[key]}</option>
});

渲染功能

render() {
        const model = this.props.model;

        let tifOptions = {};

        if(model.get('tifs')) {
            tifOptions = Object.keys(this.props.model.get('tifs')).forEach(function(key) {
                return <option value={key}>{this.props.model.get('tifs')[key]}</option>
            });
        }

        return (
            <div class={cellClasses}>

                    <div class="grid__col-5 text--center grid__col--bleed">
                        <h5 class="flush text--uppercase">TIF</h5>
                        <select id="tif" name="tif" onChange={this.handleChange}>
                            {tifOptions}
                        </select>
                    </div>

            </div>
        );
    }

控制台出错

If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object)

问题是你使用的方式forEach(),因为它总是会返回undefined。您可能正在寻找map()方法,它返回一个新数组:

var tifOptions = Object.keys(tifs).map(function(key) {
    return <option value={key}>{tifs[key]}</option>
});

如果您还想使用forEach(),你必须这样做:

var tifOptions = [];

Object.keys(tifs).forEach(function(key) {
    tifOptions.push(<option value={key}>{tifs[key]}</option>);
});

Update:

如果你正在编写 ES6,你可以使用更简洁的方式完成同样的事情箭头函数:

const tifOptions = Object.keys(tifs).map(key => 
    <option value={key}>{tifs[key]}</option>
)

这是一个显示上述所有选项的小提琴:https://jsfiddle.net/fs7sagep/

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

如何在 React 中循环一个对象? 的相关文章

随机推荐

  • MYSQL/PHP 查找与给定项目关联的最常见项目

    我有数千个用户生成的物品愿望清单 桌子是这样的 collectionId itemdId user id 123 2345 1 123 3465 1 123 876 1 lt 123 567 1 123 980 1 lt 777 980 2
  • TypeScript 错误:重复的标识符“LibraryManagedAttributes”

    编译失败 moonholdings io node modules types react dom node modules types react index d ts 2312 14 重复的标识符 LibraryManagedAttri
  • 安装 mediapipe 库后 cv2 不起作用

    我想使用 python 制作 handtracker 程序 但教程告诉我安装 mediapipe 库 然后我安装了它 之前使用cv2传输我的相机是可以的 但是安装mediapipe之后 cv2不起作用 这里是消息 gt gt gt impo
  • 对已经排序的数组进行快速排序

    在这个问题中 https www quora com What is randomized quicksort 阿莱霍 豪斯纳 Alejo Hausner 说道 最坏情况下快速排序的成本 that 讽刺的是 如果您将快速排序应用于已经排序的
  • 自动生成 .NET 故障转储

    我知道如何使用 ADPlus 或 DebugDiag 生成故障转储文件 但我想知道是否有一种方法可以在客户的计算机上执行此操作而无需安装这些工具 具体来说 我希望能够配置我的应用程序 例如 使用注册表值 在发生严重故障时生成故障转储 更具体
  • 如何删除字符串的一部分?

    假设我有test 23我想删除test 我怎么做 前面的前缀 可以换 我最喜欢的方法是 拆分和弹出 var str test 23 alert str split pop gt 23 var str2 adifferenttest 153
  • 在 Eclipse Android 中导入 JAR (JAudioTagger)

    我正在开发一个加载 mp3 文件的歌曲数据的程序 我正在尝试导入 JAudioTagger 来帮助加载歌曲信息 JAudioTagger 是一个 jar 文件 我进入导入窗口 但面临许多我不确定的导入选项 看起来有三种可行的选择 EJB J
  • 如何创建项目模板

    关于自定义模板的主题 我正在自学如何使用 xcode 7 和 Objective C 来做到这一点 但我陷入了困境 到目前为止 通过阅读 S O 上的其他帖子我通过复制单视图应用程序并将其放入 xcode 包的正确目录中 成功创建了一个自定
  • mocha中的异步函数 before() 总是在 it() 规范之前完成?

    我有一个回调函数before 这是为了清理数据库 一切都在before 保证在之前完成it 开始 before function db collection user remove function res is it guaranteed
  • 如何在R中获得与Stata中相同的AIC和BIC值?

    假设我有一个非常简单的模型 library foreign smoke lt read dta http fmwww bc edu ec p data wooldridge smoke dta smoking reg lt lm cigs
  • 在 C 中如何将函数作为参数传递?

    我想创建一个函数 该函数对一组数据执行通过参数传递的函数 在 C 中如何将函数作为参数传递 宣言 采用函数参数的函数原型如下所示 void func void f int 这表明参数f将是一个指向函数的指针 该函数具有void返回类型并且需
  • 获取最后更新的数据 - Codeigniter

    我在 codeigniter 工作 我有一个方案表 我的问题是我想显示每个方案的最后更新数据 我不知道该怎么做 请帮忙 my table scheme code updated on scheme name 1 2015 04 13 One
  • 使用ejabberd时有没有办法打包msg?

    我正在测试 ejabberd 的 mucroom 测试客户是Tsung 测试条件 一台ejabberd服务器 4核16G RAM 3000 个用户加入 1 个 mucroom 用户1分钟内随机发送一条消息 每个用户发送5条消息 服务器操作系
  • 将网页另存为PDF到指定目录

    我有它会打开 Internet Explorer 给用户 另存为 框 然后退出 但是 我更希望用户不必导航到正确的文件夹 而是目录来自工作表中的单元格并将网页另存为 PDF 我已经安装了完整的 Adob e 代码 Sub WebSMacro
  • 管理文件共享上的远程 DACL:Win32_ACE 到 Win32_Share

    目标 向现有文件共享添加本地用户帐户共享级读 写权限 我在开发这个方面遇到了障碍 显然 Microsoft 希望您将用户的 ACE 添加到 DACL 然后返回到共享的安全描述符中 1 不 NET SHARE ADD 不适用于现有共享 我很惊
  • 使用龙卷风处理标准输入

    如何监听 Tornado 循环中 stdin 上发生的事件 特别是 在龙卷风系统中 我想从标准输入中读取数据 对其做出反应 并在标准输入关闭时终止 同时 Tornado Web 服务也在同一进程上运行 在寻找这个时 我能找到的最相似的是处理
  • 电子邮件身份验证(Gmail、Yahoo 等)--android [重复]

    这个问题在这里已经有答案了 我对这个主题还很陌生 是否可以一次性验证所有电子邮件 ID 实际需要是我想在我的应用程序中验证电子邮件 gmail yahoo 等 一旦验证批准 它应该继续到我的应用程序 它可能是单点登录或其他什么 这可以做到吗
  • 将对象转换为派生类的对象

    我有课Record效果很好 public class Record protected string table protected string idcolumn public Record string table string idc
  • 如何让awk忽略双引号内的字段分隔符? [复制]

    这个问题在这里已经有答案了 我需要删除逗号分隔值文件中的 2 列 考虑 csv 文件中的以下行 email protected www example com field2 field3 field4 email protected fie
  • 如何在 React 中循环一个对象?

    React 新手 尝试循环对象属性 但 React 抱怨对象不是有效的 React 子对象 有人可以给我一些关于如何解决此问题的建议吗 我已经添加了 createFragment 但不完全确定需要去哪里或者我应该采取什么方法 JS var