reactjs - 为什么 ReactDOM.createPortal 在我的内容脚本中不起作用?
问题描述
我有一个包含以下代码的 content.tsx 文件:
import React from "react";
import {createPortal} from 'react-dom';
import Text from './Text';
console.log(`Content script...`);
createPortal(
<Text/>,
document.body
);
“文本”组件代码:
import React from 'react';
const Text = () => {
return (
<div>
Just text...
</div>
);
};
export default Text;
我的清单包括:
...other keys
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["./static/js/content.js"],
"run_at": "document_end"
}
]
如您所见,文件已加载并Content script ...
在控制台中打印消息。
https://i.stack.imgur.com/GS0gK.png
但是带有文本的 divJust text...
并没有添加到正文中,换句话说,createPortal 不起作用。
https://i.stack.imgur.com/j2geh.png
解决方案
你需要在createPortal
里面写return
或者render
,
像这样:
render() {
return ReactDOM.createPortal(
this.props.children,
document.body
);
}
推荐阅读
- mongoose - 用 Schema 填充数组 mongoose 中的嵌套对象
- java - onMapLongClick() 不创建自定义标记
- php - 使用 GD 在图像上写入文本不起作用
- reactjs - expo-sqlite 不要将数据插入本机反应
- python - 如何在 Django 中打印元组的名称?
- image - Flutter:- 如何检查 Gif 是否加载
- c# - System.DllNotFoundException:'无法加载 DLL'libzkfp.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)'
- php - Vips writeToBuffer 不应用图像质量
- dotnetnuke - 2sxc“与服务器交谈时出错(状态 403)”
- react-native - 在 redux 存储状态更改后导航到初始 Route