我有一个小但令人沮丧的错误。我有一个父组件,它将一个道具传递给它的孩子:

上级:

const { door } = this.props || []
...
{this.state.showModal ? <ClusterModal door={door} /> : null}


当我想在子组件中访问它时:this.props.door

另外,door道具还有一个我想访问的名为doors的钥匙。所以我尝试了:console.log(this.props.door.doors)并且控制台给了我:

javascript -  Prop 返回未定义,但我可以在控制台中看到其值-LMLPHP
太好了!但是React告诉我这一点:


  无法读取未定义的属性“门”


抱歉,这是一个不好解释的问题,但我无法解决。

谢谢阅读!

编辑

这是父母:

const { door } = this.props
const ifCluster = (
  <div>
    {door.type === 'cluster' ? (
      <div className="door-flex-item-2">
        <a
          className="sub-title-text-container"
          onClick={() => this.toggleModalButton()}
        >
          Hejsan
        </a>
        {this.state.showModal ? this.props.door ? (
          <ClusterModal door={door} />
        ) : null : null}
      </div>
    ) : null}
  </div>
)


这是孩子:

render() {
  // const { door } = this.props || []

  const customers = this.props.customers || []
  const keyedCustomers = _.keyBy(customers, '_id')

  const deliveries = this.props.deliveries || []
  const keyedDeliveries = _.keyBy(deliveries, '_id')

  console.log(this.props.door)
  const clusterDoors = this.props.door.doors.map((clusterDoor, i) => {
    console.log(clusterDoor)


我注意到,第一次登录this.props.door时,我会得到数据,但是第二次出于某种原因,它会得到undefined

最佳答案

将prop值存储在状态中,并检查值是否与prop中的值相同。用ComponentWillReceiveProps(nextProps)方法执行。

关于javascript - Prop 返回未定义,但我可以在控制台中看到其值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46447126/

10-12 15:25