【问题标题】:React generating UI from object - console.log works but nothing generated从对象反应生成 UI - console.log 工作但没有生成
【发布时间】:2021-12-02 12:45:37
【问题描述】:

我的代码可以生成我的 React UI,它可以与语言列表一起生成语言选择复选框。例如在状态时

languages = {English: true, French: false} 

但是,当我将其更改为包含数据库中的值的对象时,我没有收到任何错误,但没有加载任何内容。

[
{
    "language_name": "English",
    "lang_num": 1,
    "checked": false
},
{
    "language_name": "Mandarin Chinese",
    "lang_num": 2,
    "checked": false
},
]

代码是:

       {   
        Object.entries(this.props.languages).forEach(([key, value]) => {
          console.log(this.props.languages[key].language_name),
          <label id="checkbox-margin">
            <input
              type="checkbox"
              value={this.props.languages[key].language_name}  
              checked={this.props.languages[key].checked}
              onChange={this.handleLangClick}
            /> {this.props.languages[key].language_name}
          </label>
      }
      )

console.log 很好地列出了每个语言字符串,我将它们全部打印在控制台中,但 UI 上没有生成任何内容。知道为什么吗?

谢谢!

【问题讨论】:

    标签: javascript reactjs object


    【解决方案1】:

    尝试使用map函数遍历数组:

    {this.props.languages ? this.props.languages.map(language => {
        return (
            <label id="checkbox-margin" key={language.lang_num}>
                <input
                    type="checkbox"
                    value={language.language_name}  
                    checked={language.checked}
                    onChange={this.handleLangClick}
                /> {language.language_name}
            </label>
        )}) : 'Loading languages...'
    }
    

    【讨论】:

    • 感谢完美,出于兴趣,为什么 .entries 在这里不起作用?
    • @dooglex 您的 JSON 响应是一个对象数组,而不是像您的示例状态这样的简单对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    相关资源
    最近更新 更多