【发布时间】:2018-05-18 12:36:12
【问题描述】:
我现在正在尝试使用 react 呈现列表时遇到问题,我将我的 react 元素保存到状态中,但我遇到的问题是控制台输出以下内容:
未捕获的错误:对象作为 React 子项无效(找到:带有键 {} 的对象)。如果您打算渲染一组子项,请改用数组。
export default class UserData extends Component {
constructor() {
super();
this.state = {
resultsItems: {}
}
};
componentDidMount() {
fetch(url)
.then(results => {
return results.json();
}).then(data => {
console.log(data.items);
let items = data.items.map((item) => {
console.log(item.title);
return (
<li>
<h2>item.title</h2>
</li>
)
});
this.setState({resultsItems: items});
console.log("state", this.state.resultsItems);
})
.catch(error => console.log(error))
};
render() {
return (
<div>
<button onClick={() => this.props.updateLoginStatus(false)}>
Logout
</button>
<div>
ID: {this.props.user}
{this.state.resultsItems}
</div>
</div>
)
}
}
【问题讨论】:
-
除了 Chris 的正确答案之外,请注意
item.title在您的componentDidMount中需要大括号。 -
顺便说一句,我强烈建议您避免将组件本身存储在状态中,而是存储构建组件所需的可序列化数据。更多详情请见the official advice on the matter
-
@Hamms 非常正确。
-
虽然有人问过,但这里的答案更完整:Add element to a state React
标签: javascript reactjs jsx