reactjs - 使用 useRef 反应 createPortal 不起作用
问题描述
const ref = useRef(null);
return (
<>
{ref.current !== null &&
createPortal(<span>Hello!</span>, ref.current as any)}
<div ref={ref}></div>
</>
);
据我了解门户网站,span
应将 a 附加到div
,但事实并非如此。
为什么呢?
解决方案
对 refs 的更改不会触发更新(重新渲染)。我的猜测是您的组件仅渲染一次,ref.current
已设置,但没有重新渲染,因此您看不到span
.
对于这种情况,您可能最好使用回调 ref:
const onRef = element => {
if (element !== null) {
createPortal(<span>Hello!</span>, element);
}
};
return <div ref={onRef}></div>;
推荐阅读
- android - 从 BottomSheetDialogFragment 打开片段 - Android Studio Java
- android - 当我向用户发送图像时,Firebase 数据库没有显示任何内容。reference.child("聊天").push().setValue(hashMap);
- c# - AWS Lambda 上的 .net core .XLSX 流式传输
- node.js - 数据库“neo4j”不可用。无法重置 neo4j 数据库
- javascript - 如何在此场景中触发 keyup 事件
- c# - 如何将字符串转换为 Microsoft.WindowsAzure.Storage.Table.ITableEntity?
- cmake - cmake configure_package_config_file 未正确添加 PATH_VARS
- java - 当我将 SpringBoot 应用程序部署到 AWS Elastic Beanstalk 并且无法从本地 SpringBoot 连接到 RDS 时出现 502 bad gateway
- c# - 是否有一种通用方法可以在现有列表上创建“视图”,允许仅在调用提交方法后才进行更改?
- c++ - 为什么我无法在下面的代码中为浮点变量添加值?