如何在 react.js 中使用 json

Posted

技术标签:

【中文标题】如何在 react.js 中使用 json【英文标题】:how to work with json in react.js 【发布时间】:2017-10-21 21:39:30 【问题描述】:

这里是 json 格式的数据:https://jsonplaceholder.typicode.com/posts

这是我的代码。运行它后,我在 console.log 中出现错误:“对象作为 React 子项无效(找到:带有键 userId、id、title、body 的对象)。如果您打算渲染一组子项”。 为什么当我在 COMpoonentDidMount 中使用 console.log(response) 时,我有我的对象数组但不能在 render() 中使用它。我做错了什么?

class App extends React.Component 
    constructor(props) 
        super(props);
        this.state =  
            users: []
        
    

  componentDidMount()   
      var component = this;
      api.fetchInfo() 
        .then(function(response) 
            component.setState(  users: response  );
        );
  

  render()  
    //console.log('here' + this.state.users);
    return (
      <ul>

        <p>this.state.users</p>
        
            this.state.users.map(
                function(elem) 
                   return <li>elem.userId</li> 
                
            )
        
      </ul>
    )
  



ReactDOM.render(
  <App />,
  document.getElementById('app')
);

【问题讨论】:

【参考方案1】:

这行jsx:

<p>this.state.users</p>

要求 React 渲染一个普通的对象。它不知道如何为您做到这一点。如果你想让json打印到页面上,可以stringify它:

<p>JSON.stringify(this.state.users)</p>

否则,您可能希望通过 map 并呈现对您有意义的标记。

【讨论】:

我不知道怎么打。我反应的第三天,它对我来说仍然很奇怪:)【参考方案2】:

问题是由线路引起的

<p>this.state.users</p>

您可以删除它或使用:

<p>JSON.stringify(this.state.users)</p>

简单来说,解释是这样的:

在任何 jsx 块中,您可以将 javascript 嵌入花括号中,即 块内的 javascript 的结果必须是:字符串、null 或另一个有效的 jsx 对象。如果是其他问题,您将看到您看到的错误。

在你的情况下,你也有一个有效的块:

    
        this.state.users.map(
            function(elem) 
               return <li>elem.userId</li> 
            
        )
    

上面的块返回有效的 jsx,它是一堆 &lt;li&gt; 元素。那些&lt;li&gt; 元素本身有一个elem.userId,可以直接解释为字符串。

【讨论】:

以上是关于如何在 react.js 中使用 json的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 React.js 中 json 的本地路径?

如何在 REACT JS API 调用中迭代 JSON 嵌套数组?

如何在 React js 中将 HTML 模板呈现为来自 json 的响应

React JS - 这个函数如何删除 JSON 数据?

如何在 React JS 中使用聊天气泡制作像 UI 一样的聊天

如何从 React JS 上传和获取图像到 Json-server?