Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 为什么状态值更改时未禁用按钮(ReactJS)_Javascript_Reactjs - Fatal编程技术网

Javascript 为什么状态值更改时未禁用按钮(ReactJS)

Javascript 为什么状态值更改时未禁用按钮(ReactJS),javascript,reactjs,Javascript,Reactjs,我试图在输入等于0时禁用按钮。开始时,按钮被禁用,但当我尝试增加输入>0并将输入减少回0时,按钮不会被禁用 constructor() { super(); this.state = { number: 0, }; } onInputChange = (e) => { this.setState({ number: e.target.value }); }; render() { const { number} = this.

我试图在输入等于0时禁用按钮。开始时,按钮被禁用,但当我尝试增加输入>0并将输入减少回0时,按钮不会被禁用

constructor() {
    super();
    this.state = {
      number: 0,
    };
  }
onInputChange = (e) => {
    this.setState({ number: e.target.value });
};


  render() {
    const { number} = this.state;

    return (
      <Fragment>
        <input
          value={number}
          type="number"
          max="100"
          min="0"
          onChange={this.onInputChange}
        ></input>
        <Button
          style={{ display: "block" }}
          disabled={number === 0 ? true : false}
        >
          Print
        </Button>
有人能向我解释为什么状态改变了,但禁用属性不起作用吗?如果我将条件设置为:

  <Button
          style={{ display: "block" }}
          disabled={number < 1 ? true : false}
        >
那么代码就可以正常工作了。但我真的想知道为什么我的第一种方法不起作用。
谢谢。

这可能是由于变量类型造成的。强制打字。示例:+'0'获取0


您可以尝试编写为:disabled={+number?true:false}

这可能是由于变量类型造成的。强制打字。示例:+'0'获取0


您可以尝试编写为:disabled={+number?true:false}

从e.target.value返回的值类型是string,您应该使用类似parseint的方法将string转换为int伟大的答案,谢谢!因为我使用的是===,所以类型必须相同。这就是它不起作用的原因。从e.target.value返回的值的类型是string,您应该使用类似parseint的方法将string转换为int。非常好的答案,谢谢!因为我使用的是===,所以类型必须相同。这就是为什么它不起作用。这是绝对正确的,我的错误是使用了严格的比较。谢谢你的详细解释。这是绝对正确的,我的错误是使用了严格的比较。感谢您的详细解释。感谢简洁的解决方案,我使用严格比较的错误。感谢简洁的解决方案,我使用严格比较的错误。
disabled={ "0" === 0} // Returns false

disabled={ "0" == 0} // Returns true
onInputChange = (e) => {
 this.setState({ number: parseInt(e.target.value) });
};