Javascript 将状态作为道具传递给子对象会导致null
我有一个父组件,我在其中进行API调用,并为一个对象设置状态。然后我把这个状态作为道具传递给孩子。这是我的家长代码Javascript 将状态作为道具传递给子对象会导致null,javascript,reactjs,Javascript,Reactjs,我有一个父组件,我在其中进行API调用,并为一个对象设置状态。然后我把这个状态作为道具传递给孩子。这是我的家长代码 class Header extends React.Component { constructor(props) { super(props); this.state = { user: null}; }//end of constructor componentWillMount() { getUserData(url).then((
class Header extends React.Component {
constructor(props) {
super(props);
this.state = { user: null};
}//end of constructor
componentWillMount() {
getUserData(url).then((result) =>{
this.setState({user : result});
console.log(this.state.user);
});
}
render() {
return (
<div className="header">
<Masthead user= {this.state.user} />
</div>
);
}
}
export default Header;
类头扩展React.Component{
建造师(道具){
超级(道具);
this.state={user:null};
}//构造函数结束
组件willmount(){
getUserData(url)。然后((结果)=>{
this.setState({user:result});
console.log(this.state.user);
});
}
render(){
返回(
);
}
}
导出默认标题;
这是孩子,
class Masthead extends React.Component {
constructor(props){
super(props);
}
componentDidMount(){
console.log(this.props.user);
}
render() {
return (
<div className="col-md-8">
......
</div>
);
}
}
Masthead.propTypes ={
user: React.PropTypes.object
};
export default Masthead;
类报头扩展React.Component{
建造师(道具){
超级(道具);
}
componentDidMount(){
console.log(this.props.user);
}
render(){
报税表(
......
);
}
}
桅顶支撑杆={
用户:React.PropTypes.object
};
导出默认报头;
当我将用户对象登录到子对象中时,我得到该用户对象的null
。我做错了什么?来自文档:
componentWillMount()
在装入之前立即调用。它在render()
之前调用,因此在此方法中设置状态不会触发重新渲染
换句话说,即使父状态在组件willmount()
中发生更改,也不会影响子组件。尝试在文档中的componentDidMount()
中调用API:
componentWillMount()
在装入之前立即调用。它在render()
之前调用,因此在此方法中设置状态不会触发重新渲染
换句话说,即使父状态在
组件willmount()
中发生更改,也不会影响子组件。尝试在componentDidMount()
中进行API调用在将子项装入DOM时,父项尚未使用更新的值设置状态变量,即构造函数中的状态变量仍然为null
将API调用放入
componentDidMount()
将在父级装入后运行,然后当调用返回并且您setState
时,您的子级将使用新的道具重新渲染。在将子级装入DOM时,父级未使用更新的值设置状态变量,也就是说,构造函数中的值仍然为空
将API调用放入componentDidMount()
将在父级装入后运行,然后当调用返回并且您setState
时,您的子级将使用新的道具重新渲染