开发者问题收集

TypeError:无法读取未定义的属性|ReactJS

2017-07-09
826

我想在 map() 函数中使用 fields ,但是我得到了这个 TypeError: Cannot read property 'fields' of undefined ,我不明白为什么。因为当我 console.log(this.props.schema.fields) 时,我的控制台中打印出了数据。

问题

为什么会发生这种情况?是因为 return() 内部有另一个作用域吗?还是什么……?

export default class ObjectDisplay extends Component {
  render() {
    console.log(this.props.schema.fields)
    //const { parentDocumentId, value, open, schema } = this.props
    return (
      <table>
        <tbody>
          {this.props.schema.fields.map((schema, i) =>
            <ObjectKeyDisplay
              key={i}
              schema={schema}
              value={(this.props.value || {})[schema.name]}
              parentDocumentId={this.props.parentDocumentId}
            />
          )}
        </tbody>
      </table>
    )
  }
}

我非常感谢大家的帮助。

2个回答

它给出错误是因为第一次渲染时无法找到字段属性。尝试使用三元运算符设置条件。

{
  this.props.schema.fields
       ?
        ... Map function 
       : <div></div>
} 
sohamdodia
2017-07-09

我用另一个名为 schema 的常量覆盖了我的第一个常量 schema 。抱歉造成误解!

Martin Nordström
2017-07-10