最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

css - CreateCache @emotioncache Failed to execute 'insertBefore' on 'Node': - Stack Overflow

programmeradmin2浏览0评论

I'm only getting this error in production

Does anyone know why? I'm trying to put a component inside an iframe

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.

import React, { useRef, useState } from "react";
import { createPortal } from "react-dom";
import createCache from "@emotion/cache";
import { CacheProvider } from "@emotion/react";
import { styled } from "@mui/material";

const PreviewIframe = styled("iframe")(() => ({
  border: "none",
  height: "100%",
  width: "100%",
}));
export const IFrame = ({
  children,
  ...props
}: {
  children: React.ReactNode;
  style?: React.CSSProperties;
}) => {
  const ref = useRef<HTMLIFrameElement>(null);
  const mountNode = ref?.current?.contentWindow?.document?.body;

  const cache = createCache({
    key: "css",
    container: ref?.current?.contentWindow?.document?.head,
    prepend: true,
  });
  return (
    <PreviewIframe ref={ref} {...props}>
      {mountNode &&
        createPortal(
          <CacheProvider value={cache}>{children}</CacheProvider>,
          mountNode
        )}
    </PreviewIframe>
  );
};

发布评论

评论列表(0)

  1. 暂无评论