Javascript 循环出现jsx渲染错误:未定义元素
我正试图以json格式循环通过obj,这是通过点击api获得的。然而,当我试图渲染它时,我一直遇到一个错误,即元素没有定义 这是我的评论模板返回html:Javascript 循环出现jsx渲染错误:未定义元素,javascript,reactjs,rest,Javascript,Reactjs,Rest,我正试图以json格式循环通过obj,这是通过点击api获得的。然而,当我试图渲染它时,我一直遇到一个错误,即元素没有定义 这是我的评论模板返回html: return ( <div> this.state.comments.map((comment)=> ( {comment.owner} {comment.text} ) </div> );
return (
<div>
this.state.comments.map((comment)=> (
{comment.owner}
{comment.text}
)
</div>
);
}
这是我从开发人员工具复制的错误:
bundle.js:1490 Uncaught ReferenceError: comment is not defined
at Comments.render (bundle.js:1490)
at finishClassComponent (bundle.js:7852)
at updateClassComponent (bundle.js:7849)
at beginWork (bundle.js:7945)
at performUnitOfWork (bundle.js:8265)
at workLoop (bundle.js:8289)
at HTMLUnknownElement.callCallback (bundle.js:6267)
at Object.invokeGuardedCallbackDev (bundle.js:6283)
at invokeGuardedCallback (bundle.js:6222)
at performWork (bundle.js:8325)
你在哪里申报你的州?你把构造器添加到代码中了吗
this.state={comments:newcomment()}代码>可能是您需要使用{}在jsx中包装javascript:
{this.state.comments.map()}
您还应该在父组件或html标记中包含jsx(我在这里使用li时就是这样做的,这是构建列表时的标准)
编辑:我用2个对象初始化了comments状态,但是你的应用程序只需用一个空数组初始化状态:
state={
comments:[]
}
这应该可以工作(假设设置状态正确):
类SomeComponent扩展React.Component{
陈述={
评论:[
{所有者:'owner1',文本:'comment2'},
{所有者:'owner2',文本:'comment2'}
]
}
render(){
返回(
{this.state.comments.map((comment)=>{
返回- {comment.owner}-{comment.text}
})}
);
}
}
ReactDOM.render(
,
document.getElementById(“react”)
);代码>
检查您是否已声明状态
constructor() {
this.state = { comments: [] }
}
此外,如果还没有为其设置值,则可以对其进行初始化,或者至少假定为空数组
(this.state.comments || []).map(..)
在render
函数中,不要忘记用大括号将其包裹起来
{(this.state.comments || []).map(..)}
{(this.state.comments || []).map(..)}