Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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 反应Mousewheel.deltaY对if语句作出反应,但不切换_Javascript_Reactjs_Switch Statement - Fatal编程技术网

Javascript 反应Mousewheel.deltaY对if语句作出反应,但不切换

Javascript 反应Mousewheel.deltaY对if语句作出反应,但不切换,javascript,reactjs,switch-statement,Javascript,Reactjs,Switch Statement,React组件侦听滚轮滚动: componentDidMount() { this.refs.holder.addEventListener('mousewheel', this.handleScroll); } 并对此作出反应: handleScroll(e) { switch (e) { case e.deltaY > 0: console.log('positive'); default: consol

React组件侦听滚轮滚动:

componentDidMount() {
    this.refs.holder.addEventListener('mousewheel', this.handleScroll);
  }
并对此作出反应:

  handleScroll(e) {
    switch (e) {
      case e.deltaY > 0:
        console.log('positive');
      default:
        console.log('negative');
    }

    if (e.deltaY > 0) {
      console.log('positive');
    } else {
      console.log('negative');
    }
  }

它与if/else语句配合很好,但与switch不配合,请您解释一下原因好吗?

这与React无关。Switch语句不是这样工作的。您正在将
e.deltaY>0
的结果与
e
进行比较,这两个结果永远不会匹配
e.deltaY>0
将始终为
true
false
e
是一个事件对象,永远不会是
true
false
。你可以做类似的事情来代替

switch (e.deltaY > 0) {
  case true:
    console.log('positive');
    break;
  default:
    console.log('negative');
}

但我建议使用一个简单的
if
语句,因为您只有
true
false
这与React无关。Switch语句不是这样工作的。您正在将
e.deltaY>0
的结果与
e
进行比较,这两个结果永远不会匹配
e.deltaY>0
将始终为
true
false
e
是一个事件对象,永远不会是
true
false
。你可以做类似的事情来代替

switch (e.deltaY > 0) {
  case true:
    console.log('positive');
    break;
  default:
    console.log('negative');
}
但我建议使用一个简单的
if
语句,因为您只有Doc中的
true
false

switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式计算结果与输入表达式的结果相同(使用严格比较,==),并将控制权转移给它

每次
===
都会给出不同的结果,您不会从文档中得到预期的结果

switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式计算结果与输入表达式的结果相同(使用严格比较,==),并将控制权转移给它


每次
===
都会给出不同的结果,你不会得到预期的结果

谢谢你的解释,查理。谢谢你的解释,查理。