reactjs - 错误:目标容器不是 DOM 元素(React/Nextjs)
问题描述
我在 React 中创建了一个上下文组件,以在我的所有 React 页面中返回一条消息。
我收到了这个主题的错误。查看了stackoverflow中的其他问题,但没有一个可以帮助我。
这是代码:
message.js
function Message(props) {
const messageCtx = useContext(MessageBannerContext);
return ReactDOM.createPortal(
<div>
<p>Message</p>
<button>More info</button>
<button onClick={messageCtx.hideMessage}>Ok</button>
</div>,
useEffect(() => {
document.getElementById('message');
}, [])
);
}
export default Message;
_document.js
class MyDocument extends Document {
render() {
return (
<Html>
<Head />
<body>
<Main />
<DeferNextScript />
</body>
<div id="message"></div>
</Html>
);
}
}
export default MyDocument;
任何想法为什么我会在主题中遇到错误?
解决方案
Nextjs 在服务器中运行,因此没有定义 Document Object。我一直在为此苦苦挣扎,但是您可以尝试一个名为jsdom的包。
推荐阅读
- apache-kafka - Kafka Producer API:bootstrap.servers 属性值
- python - 为什么变量在Python中按值传递时具有相同的ID
- javascript - Next.js Import image error Module parse failed: Unexpected character '�' (1:0)
- c++ - 使用 qsettings 保存和加载修改
- r - 用于提取 ESS 数据的 R 函数,“找不到函数粘贴”
- java - 使用按钮和意图计算反应时间
- spring - 同一实体中多对多关系的无限递归
- php - 如何在php while循环中使用来自数据库的动态数据的引导选项卡
- xml-signature - Xades4j:策略“自我:策略/一般”错误
- python-3.x - Tkinter GUI 小部件挂起(输入通过超链接/串行连续发送)