【发布时间】:2019-03-30 03:14:22
【问题描述】:
在我的 app.js 中,我正在使用 firebase 进行身份验证并将用户保存在状态中并作为道具发送到 Home 组件。
export default class App extends React.Component {
constructor(props) {
super(props);
this.state={
user:{}
}
}
componentDidMount() {
this.authListener();
}
authListener() {
fire.auth().onAuthStateChanged((user) => {
if(user) {
this.setState({user});
} else {
this.setState({user:null});
}
})
}
render() {
return (
<div className="App">
{this.state.user ? (<Home user={this.state.user} />) : (<Login />)}
</div>
)
}
}
然后在我的 Home.js 中
export default class Home extends React.Component {
constructor(props) {
super(props);
this.state = {
error: null,
registered: false
};
}
componentDidMount() {
console.log(this.props);
}
render() {
return (
<div className="container">
<h1>Home</h1>
</div>
)
}
}
console.log(this.props) 返回一个空用户:
{user: {…}}
奇怪的是,如果我只 console.log(this),我会得到整个对象,包括拥有所有信息的用户。
Home {props: {…}, context: {…}, refs: {…}, updater: {…}, state: {…}, …}
context: {}
props: {user: Lk}
refs: {}
state: {error: null, registered: false}
updater: {isMounted: ƒ, enqueueSetState: ƒ, enqueueReplaceState: ƒ, enqueueForceUpdate: ƒ}
_reactInternalFiber: FiberNode {tag: 2, key: null, type: ƒ, stateNode: Home, return: FiberNode, …}
_reactInternalInstance: {_processChildContext: ƒ}
isMounted: (...)
replaceState: (...)
__proto__: Component
为什么我无法访问 componentDidMount 中的 this.props ?
谢谢!
【问题讨论】:
标签: reactjs