Javascript 如果输入为空,如何将状态重置为null?

Javascript 如果输入为空,如何将状态重置为null?,javascript,reactjs,Javascript,Reactjs,我有一些状态设置为null的输入,当最终用户键入某个内容并删除所有内容时,输入返回空字符串。 如何将状态设置为返回到null? 我对下面的IF语句有一个问题,当用户删除他所有的句子时,他不工作。状态为”而不是null 谢谢你的帮助 onChange = (e, name, country) => { if (e.target.value === "") { this.setState({ [name]: { ...this.state[name], [country]

我有一些状态设置为
null
的输入,当最终用户键入某个内容并删除所有内容时,输入返回空字符串。 如何将状态设置为返回到
null
? 我对下面的IF语句有一个问题,当用户删除他所有的句子时,他不工作。状态为
而不是
null

谢谢你的帮助


onChange = (e, name, country) => {
    if (e.target.value === "") {
      this.setState({ [name]: { ...this.state[name], [country]: null } });
    }
    this.setState({ [name]: { ...this.state[name], [country]: e.target.value } });
  }

因为在IF语句之后,这一行将被执行

this.setState({ [name]: { ...this.state[name], [country]: e.target.value } });

因为在IF语句之后,这一行将被执行

this.setState({ [name]: { ...this.state[name], [country]: e.target.value } });

请更改方法

onChange = (event, name, country) => {
   const { value } = event.target 
   this.setState({ 
       [name]: { ...this.state[name], [country]: value ? value : null } 
    });
}

当国家/地区值空白字符串将其设置为空时,请使用onChange方法

onChange = (event, name, country) => {
   const { value } = event.target 
   this.setState({ 
       [name]: { ...this.state[name], [country]: value ? value : null } 
    });
}

当country值为空字符串时,将其设置为
null

,因为@Stefan已经说过在第一个if之后执行第二个setState语句

要缩短代码并使其正常工作,您可以使用以下内容:

onChange = (e, name, country) => {
this.setState({ [name]: { ...this.state[name], [country]: e.target.value ? this.target.value : null } }); 

如果值为“”,则this.target.value为false;如果值为未定义或null,则在所有其他情况下均为true。

as@Stefan已经说过,您的第二个setState语句将在第一个if之后执行

要缩短代码并使其正常工作,您可以使用以下内容:

onChange = (e, name, country) => {
this.setState({ [name]: { ...this.state[name], [country]: e.target.value ? this.target.value : null } }); 

如果值为“”,则this.target.value为false,未定义或在所有其他情况下为null和true。

您的第二条setState指令总是被执行,因为它不包含在ELSE条件中感谢这是个问题您的第二条setState指令总是被执行,因为它不包含在ELSE条件中感谢这是个问题感谢做了很多工作。是的,我忘了其他条件。。。非常感谢感谢你的努力。是的,我忘了其他条件。。。非常感谢,这就是问题所在!!非常感谢,这就是问题所在!!谢谢