这是演示我遇到的问题的组件的简化版本。我想访问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
这是相应的控制台输出:
编辑:更新标题; this.props未定义,但this.props中的属性是。
答案 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}/>