Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs onChange因getDerivedStateFromProps而无法运行_Reactjs - Fatal编程技术网

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将对此进行研究。非常感谢。