【发布时间】:2020-12-23 16:16:43
【问题描述】:
我要修改个人资料,我用getDerivedStateFromProps()而不是componentWillReceiveProps()来接收道具。并且,编辑用户名、姓名,并设置状态以更新个人数据。它不应该被更新。
我已经添加了以下代码。
构造函数
constructor(props){
super(props)
this.state = {
name : '',
username : '',
email : ''
}
this.props.getPersonal(userId)
}
如果我使用 componentWillReceiveProps,它工作正常
static componentWillReceiveProps(nextProps) {
if(this.state.username !== nextProps.personal.username){
this.setState({username: nextProps.personal.username})
}
}
如果我使用 getDerivedStateFromProps
static getDerivedStateFromProps(props, state) {
if (props.personal.username !== state.username) {
return {
username: props.personal.username
};
}
return null;
}
更新状态
handleChange = e => {
const { name, value } = e.target;
this.setState({ [name] : value})
}
渲染方法
render(){
const { username, name } = this.state
return (
<div>
<div className="form-group m-t-40">
<div className="col-xs-12">
<input className="form-control" type="text" name="username" placeholder="Email" value={username} onChange={this.handleChange} />
</div>
</div>
</div>
)
}
我尝试了 ReactJs 13.1,希望你能帮助我。
【问题讨论】:
标签: reactjs react-native react-redux