我是React世界的新手。我在编辑操作时遇到了生命周期方法。
即使更改道具,也不会触发componentWillReceiveProps方法。
这是我的代码示例。
this.intialState = {
name:'',
code:'',
};
this.state = this.intialState;
componentWillReceiveProps(nextprops){
this.setState({
name:nextprops.KaraikarEdit.name,
code:nextprops.KaraikarEdit.code
})
}
render() {
return (
<div className="form-group">
<input type= "text" className="form-control" value={this.state.name} placeholder="Enter Name" name="name" onChange = {this.onhandleChange} />
</div>
<div className="form-group">
<input type= "text" className="form-control" value={this.state.code} placeholder="Enter Code" name="code" onChange = {this.onhandleChange} />
</div>
);
}
const mapStateToProps = (state) => {
return {
KaraikarEdit: state.KaraikarDetails.editdata
}
}
export default connect(mapStateToProps)(KaraikarMasterAdd);
我在KaraikarEdit收到了newprops。但是不会触发componentWillReceiveProps生命周期方法。
我知道在第一次渲染时没有调用componentWillReceiveProps。所以我使用了componentDidMount方法,在这个方法中我调度了一个对这个组件没用的动作。然后componentWillReceiveProps工作。
我应该使用componentDidMount或componentWillMount方法来使用componentReceiveProps方法吗?如果是的话,在componentDidMount方法中包含哪些内容?
答案 0 :(得分:0)
如果要在安装时设置组件state
,则应使用componentDidMount
。在初始渲染时未调用componentWillReceiveProps
。然后,为了处理更新,您可能希望在呈现更新的标记之前使用componentWillUpdate
来设置新状态(因为它基于组件状态)。
但是!正如我在您的方法中看到的那样 - 您不必要地将存储状态复制到组件状态。 您可以在this.props
函数中使用render
!在此方法中,您的实施中不需要componentWillReceiveProps
。