React如何实现全屏监听Esc键

发布时间:2022-8-09 09:30

这篇文章主要介绍了React如何实现全屏监听Esc键,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教!

全屏监听Esc键

全屏与退出全屏

if (isFull) {
      document.exitFullscreen();
    } else {
      tree.current.requestFullscreen();
      tree.current.style.width = '100%'
    }
  };

监听退出全屏事件

退出方式有两种:

1.通过上面的requestFullscreen。2.通过按esc退出

问题:通过requestFullscreen操作可以修改数据状态,但当用户按esc键时,是监听不到的。

采用如下方式:

const escFunction = () => {
   setFull((prevFill) => !prevFill); 
}
 
useEffect(() => {
// 监听退出全屏事件 --- chrome 用 esc 退出全屏并不会触发 keyup 事件
document.addEventListener("webkitfullscreenchange", escFunction); /* Chrome, Safari and Opera */
document.addEventListener("mozfullscreenchange", escFunction); /* Firefox */
document.addEventListener("fullscreenchange", escFunction); /* Standard syntax */
document.addEventListener("msfullscreenchange", escFunction); /* IE / Edge */
return () => {
//销毁时清除监听
  document.removeEventListener("webkitfullscreenchange", escFunction);
  document.removeEventListener("mozfullscreenchange", escFunction);
  document.removeEventListener("fullscreenchange", escFunction);
  document.removeEventListener("MSFullscreenChange", escFunction);
}
  }, []);

React添加监听事件 监听键盘事件

react添加监听事件监听键盘事件

参考:

记录下确认框confirm代码:

React Context与setState详解使用方法 网站建设

React Context与setState详解使用方法

React对于需要插槽的情况非常灵活,有两种方案可以实现:组件的children子元素和props属性传递React元素。 children实现插槽 每个组件都可以获取到 props.childr...