基于状态的条件渲染

IT技术 reactjs
2021-05-04 03:55:30

我想根据状态做一些条件渲染。我的状态看起来像这样:

state = {
  text: '',
  properties: {
     someMoreData: [{...}]
  },
  moreData: ''
}

我想根据someMoreData我所在州的属性键中是否存在字段来进行条件渲染我当前的代码如下所示:

render () {
     console.log(this.state)
     if('someMoreData' in this.state.properties)
     return (
         <div>
          ..
         </div>
     )
}

React 抛出一个错误说明 Cannot use 'in' operator to search for 'someMoreData' in undefined

如何格式化我的代码,以便如果该someMoreData字段存在,我会得到我的 JSX,如果不存在,我会呈现其他一些 JSX。

2个回答

通常,您只需执行以下操作:

render() {
  return (
    <div>
      {
        this.state.properties.someMoreData && (
          <div>Some other JSX stuff</div>
        )
      }
    </div>
  )
}

然而,Cannot use 'in' operator to search for 'someMoreData' in undefined似乎表明,无论出于何种原因this.state.propertiesundefined不知道为什么只用你发布的代码,但我会看看。

您可以使用三元运算符做到这一点

render() {
  return (
    <div>
      {this.state.properties.someMoreData ? 
          // someMoreData exists
          (<div>Some JSX stuff</div>) 
          :
          //someMoreData does not exist
          (<div>Some other JSX stuff</div>)
      }
    </div>
  )
}