我有一个模式(弹出),这类 gallery .我试图通过使用useRef钩子将注意力集中在div上,但它并不像我所分析的那样工作.我正在try 创建一种功能,让我能够通过按键盘箭头来切换图像.就快完工了.但现在要切换图像,我必须点击整个模式才能专注于它.如果没有这个键盘,就不会切换图像.

我找到了这段代码,用于自动聚焦模式DIV,但它不起作用.

const ref = useRef(null);

useEffect(() => {
  ref.current.focus();
}, []);

return(
  <div 
      ref={ref} 
      tabIndex={1} 
      onKeyDown={(e) => handleKeyboardArrows(e)}>
          
          <h1>My Popup</h1>
  </div>
);

我猜是有人在解释我的错误并帮助我.THX

推荐答案

带有空依赖数组的useEffect挂钩只会在组件挂载时运行一次,而不是在打开或关闭模式时运行.在您的代码中,Focus方法将只被调用一次,如果当时无法看到或呈现模式,则该方法可能无法工作.要解决此问题,您需要使用反映模式状态或props 的依赖项,例如modalOpen.

useEffect(() => {
  if (modalOpen) {
    modalRef.current.focus();
  }
}, [modalOpen]);

Reactjs相关问答推荐

如何使用json将购物车数组传递到后台API

props 可以在Reaction中锻造吗?

为什么登录错误和密码在创建Reaction-Hook-Form后立即被删除?

一键MUI导出

如何在NextJS中仅在刷新页面和页面淡出页面过渡时添加全屏加载器

如何从Reaction-Arborist树获取排序数据

是否为Reaction中未使用的组件生成Tailwincss样式?

如何在react 中过滤数组的数组?

Mui DataGrid 在第二页和前一页上显示项目时出现问题

Mui / Material UI 5:如何从 StaticTimePicker 中删除打开下一个视图/打开上一个视图按钮?

获取更多数据后更新 DOM,而不刷新 React.js 中的页面

React对象值下降2次而不是1次

React 组件列表中的第一个计时器正在获取值 NaN

无法在react 中向表中添加行

如何在不使用 Axios 的情况下将图像文件从 React.js 发送到 Spring Boot Rest API?

文本的几个词具有线性渐变 colored颜色 - React native

使用 react pro 侧边栏展开折叠菜单

为什么 setState 在 React 中不是异步的?

当页面重新加载react 路由导航到第一页 v6

如何防止 mui x-date-picker 被截断?