`this.props`中的属性在componentDidMount()中不可用,但在`this`中可见相同的属性

时间:2017-11-26 18:12:14

标签: reactjs

这是演示我遇到的问题的组件的简化版本。我想访问this.props中的componentDidMount(),但该属性未定义。但是,在将日志仅作为this传递时查看日志。

render()方法中,this.props可用。

import React, { Component } from 'react';
import * as ReadableAPI from '../utils/api'

class ListComments extends Component {
  componentDidMount() {
    console.log("mounted")
    console.log(this.props)
    console.log(this)
  }
  render() {
    console.log("rendered")
    return (
      <div>
        <h1>{this.props.postId}</h1>
      </div>
    )
  }
}

export default ListComments

这是相应的控制台输出:

console demonstrating issue

编辑:更新标题; this.props未定义,但this.props中的属性是。

1 个答案:

答案 0 :(得分:1)

问题在于:

我通过父组件Post将属性分配给ListComments组件。然后,在Post中,我错误地从组件状态向子组件分配了相同的id。:

<Route path="/:category/:id" component={Post}/>

<ListComments postId={this.state.post.id}/>

我应该通过原始路由器参数分配:

<ListComments postId={this.props.match.params.id}/>