React不变量冲突:对象作为React的子对象是无效的
React Invariant Violation: Objects are not valid as a React child
我有以下代码:
import ReactDom from 'react-dom';
import React from 'react';
import {render} from 'react-dom';
import $ from 'jquery';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: '',
loading: true
}
}
componentDidMount () {
const newsfeedURL = 'https://s3-eu-west-1.amazonaws.com/streetlife-coding-challenge/newsfeed.json';
$.get(newsfeedURL, function(result) {
this.setState({
data: JSON.parse(result),
loading: false
});
console.log(typeof this.state.data.messages);
}.bind(this));
}
render () {
let content;
if (this.state.loading === false && this.state.data.messages) {
content = Object.keys(this.state.data.messages).map(key => {
return <div key={key}>Key: {key}, Value: {this.state.data.messages[key]}</div>;
})
} else {
content = ''; // whatever you want it to be while waiting for data
}
return (
<div>
{content}
</div>
)
}
}
ReactDom.render(
<App />,
document.getElementById('app')
);
,但我得到以下错误:
未捕获的不变量违规:对象作为React子对象无效(发现:对象具有关键字{body, attachments, videos, topics, updated_at, id, subject, downvotes, author, posted_at, comments, user_vote, upvotes, status, tags, locations, track_impact, user_is_following, comments_count})。如果你想渲染一组孩子,使用一个数组代替或包装对象使用createFragment(object)从React附加组件。检查App
的渲染方法
我看了一下这个答案,但它对我的情况没有帮助:不变量违反:对象作为React子对象无效
在您的div中,您正在尝试渲染Value: {this.state.data.messages[key]}
,这是一个对象。你不能直接使用React的JSX渲染对象。然而,你可以渲染的是这个对象中保存的一些实际的原始数据类型(例如字符串,数字),例如Value: {this.state.data.messages[key].body}
将渲染对象的body
属性中保存的字符串值。下面是一个演示:http://codepen.io/PiotrBerebecki/pen/bwowxP
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: '',
loading: true
}
}
componentDidMount () {
const newsfeedURL = 'https://s3-eu-west-1.amazonaws.com/streetlife-coding-challenge/newsfeed.json';
$.get(newsfeedURL, function(result) {
this.setState({
data: JSON.parse(result),
loading: false
});
console.log(typeof this.state.data.messages);
}.bind(this));
}
render () {
let content;
if (this.state.loading === false && this.state.data.messages) {
content = Object.keys(this.state.data.messages).map(key => {
console.log(this.state.data.messages[key])
return <div key={key}><b>Key: {key},</b> Value: {this.state.data.messages[key].body}</div>;
})
} else {
content = ''; // whatever you want it to be while waiting for data
}
return (
<div>
{content}
</div>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: '',
loading: true
}
}
componentDidMount () {
const newsfeedURL = 'https://s3-eu-west-1.amazonaws.com/streetlife-coding-challenge/newsfeed.json';
$.get(newsfeedURL, function(result) {
this.setState({
data: result,
loading: false
});
}.bind(this));
}
render () {
let content;
if (this.state.loading === false && this.state.data.messages) {
content = this.state.data.messages.map((ele,key) => {
return <div key={key}>id: {this.state.data.messages[key].id}</div>;
})
} else {
content = ''; // whatever you want it to be while waiting for data
}
return (
<div>
{content}
</div>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
相关文章:
- 在react函数中渲染对象数组
- React-从简单对象树创建dom
- 在React中渲染子对象,丢失道具数据
- 访问要在 React Native Text 组件中显示的对象数组
- React.js+Flux-正确初始化存储中的数据对象
- React选择性地不将新道具传递给渲染对象
- TypeError:undefined不是对象(正在评估'this.props')-React Nati
- 如何从 React 中的事件对象访问自定义属性
- React是装载前处理空对象的最佳方式
- 从react routers browserHistory对象获取当前页面路径
- 测试使用 jQuery 和窗口对象的 React 组件
- JSON 对象 - 在 React Native 中访问值
- 在 React Native 中对对象数组进行动画处理
- 使用 Javascript/React.js 查找对象的数组索引
- 使用 React 创建的表单不会更新支持状态对象
- 在 react 中对字符串应用 span 会返回 [对象对象],而不是给我跨度文本
- 在 React 中从数组中删除对象
- 通过带有对象子级的数组进行 React 本机映射 - 工作方式与在 react web 中不同
- 类型错误:createElement上的React对象未定义
- 不能访问React对象状态上的object属性,即使它存在.返回未定义