Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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
Javascript React onchange事件:此.setState()未设置状态?_Javascript_Reactjs_Forms_Onchange - Fatal编程技术网

Javascript React onchange事件:此.setState()未设置状态?

Javascript React onchange事件:此.setState()未设置状态?,javascript,reactjs,forms,onchange,Javascript,Reactjs,Forms,Onchange,当用户在username和password字段中键入值时,我试图通过此设置username和password的状态。我正在使用onChange事件类型 问题:状态没有改变。我在渲染中记录this.state.data.username 您要更改的状态是this.state.username,您要控制台的状态是this.state.data.username 要在您的状态下设置数据,请使用: this.setState(prevState => ({ data: { userna

当用户在username和password字段中键入值时,我试图通过此设置username和password的状态。我正在使用onChange事件类型

问题:状态没有改变。我在渲染中记录this.state.data.username


您要更改的状态是this.state.username,您要控制台的状态是this.state.data.username

要在您的状态下设置数据,请使用:

this.setState(prevState => ({
  data: {
    username: inputUsername,
    ...prevState.data
  }
})

您未正确更新状态或未正确使用状态。构造函数中的状态具有具有用户名和密码的数据对象


您正在更改的状态是this.state.username,您控制台的状态是this.state.data.usernamethis.setState{username:inputUsername};Atm这就是我所拥有的:const{username}=this.state.data;设a=用户名;this.setState{a:inputUsername}@Shaz,即使在设置状态时对值进行了分解,也需要指定完整的嵌套结构,而不仅仅是嵌套键。请检查下面关于如何做的答案啊!因此,如果我有嵌套状态对象属性,我必须使用prevState…]
this.setState(prevState => ({
  data: {
    username: inputUsername,
    ...prevState.data
  }
})
 handleEmailOnChange = event => {
    const inputUsername = event.target.value;
    console.log("input is...", inputUsername);

    this.setState(prev => ({data: {...prev.data, username: inputUsername } }));
  };

  handlePassword = event => {
    const passwordInput = event.target.value;
    this.setState(prev => ({data: {...prev.data, password: passwordInput } }));
  };