Reactjs onChange因getDerivedStateFromProps而无法运行
我试图避免使用Reactjs onChange因getDerivedStateFromProps而无法运行,reactjs,Reactjs,我试图避免使用组件willreceiveprops,我使用getDerivedStateFromProps 它确实使用值更新状态,但是onChange函数不起作用 正在调用onChange,但我无法键入字段 只是为了给大家一个想法,组件获得编辑过的数据,用户可以编辑他们的信息 editProfile.tsx class EditProfile extends Component<dashboardProps, dashboardState> { state: dashboardS
组件willreceiveprops
,我使用getDerivedStateFromProps
它确实使用值更新状态,但是onChange函数不起作用
正在调用onChange,但我无法键入字段
只是为了给大家一个想法,组件获得编辑过的数据,用户可以编辑他们的信息
editProfile.tsx
class EditProfile extends Component<dashboardProps, dashboardState> {
state: dashboardState = {
bio: "",
gravatar: ""
};
componentDidMount() {
this.props.getUserProfile();
}
// deprecated
// componentWillReceiveProps(nextProps) {
// this.setState({
// bio: nextProps.user.bio,
// gravatar: nextProps.user.gravatar
// });
// }
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.user !== prevState.user) {
return { bio: nextProps.user.bio, gravatar: nextProps.user.gravatar };
}
return null;
}
handleChange = (e: any) => {
this.setState({
[e.target.name]: e.target.value
} as any);
console.log(e.target.name);
};
.........
}
类EditProfile扩展组件{
状态:仪表板状态={
生物信息:“,
格拉瓦塔:“
};
componentDidMount(){
this.props.getUserProfile();
}
//不赞成
//组件将接收道具(下一步){
//这是我的国家({
//bio:nextrops.user.bio,
//gravatar:nextrops.user.gravatar
// });
// }
静态getDerivedStateFromProps(下一步,上一步){
if(nextrops.user!==prevState.user){
返回{bio:nextrops.user.bio,gravatar:nextrops.user.gravatar};
}
返回null;
}
handleChange=(e:any)=>{
这是我的国家({
[e.target.name]:e.target.value
}(如有的话);
console.log(e.target.name);
};
.........
}
您可以检查并查看这是否解决了您的问题:基本上,我添加了一个名为prevProps
的状态,您可以使用prevProps
状态来比较和更新您的状态。(不使用组件将接收道具)ok将对此进行研究。非常感谢。