Javascript 循环出现jsx渲染错误:未定义元素

Javascript 循环出现jsx渲染错误:未定义元素,javascript,reactjs,rest,Javascript,Reactjs,Rest,我正试图以json格式循环通过obj,这是通过点击api获得的。然而,当我试图渲染它时,我一直遇到一个错误,即元素没有定义 这是我的评论模板返回html: return ( <div> this.state.comments.map((comment)=> ( {comment.owner} {comment.text} ) </div> );

我正试图以json格式循环通过obj,这是通过点击api获得的。然而,当我试图渲染它时,我一直遇到一个错误,即元素没有定义

这是我的评论模板返回html:


    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(..)}