reactjs - 使用 useRef react createPortal 不起作用

标签 reactjs react-hooks

  const ref = useRef(null);

  return (
    <>
      {ref.current !== null &&
        createPortal(<span>Hello!</span>, ref.current as any)}
      <div ref={ref}></div>
    </>
  );

据我了解门户网站,span 应该附加到 div,但事实并非如此。

为什么会这样?

最佳答案

对 refs 的更改不会触发更新(重新渲染)。我的猜测是您的组件只渲染一次,设置了 ref.current,但没有重新渲染,所以您看不到 span

对于这种情况,您最好使用 callback ref :

const onRef = element => {
  if (element !== null) {
    createPortal(<span>Hello!</span>, element);
  }
};

return <div ref={onRef}></div>;

关于reactjs - 使用 useRef react createPortal 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59514598/

相关文章:

javascript - event.stopPropagation 无法停止向父级冒泡

javascript - 如何使用setInterval更新数据并将其提供给React组件?

reactjs - 使用 auth0-react 库访问 token 的格式似乎不正确

javascript - 获取div的高度而不是窗口的高度

reactjs - 这是避免 "Did you accidentally call a React Hook after an early return?"的安全方法吗

reactjs - 此错误消息中的 'move this variable directly inside useEffect' 是什么意思?

reactjs - 在 React 应用程序中设置 X-Frame 选项的方法是什么

javascript - React 不会触发组件中的函数

javascript - 未找到规则 'react-hooks/exhaustive-deps' 的定义

reactjs - React hook 依赖函数作为 props