am5charts 在 React iframe chrome 扩展中找不到 id 为 ‘x’ 的 HTMLElement

huangapple go评论111阅读模式
英文:

am5charts Cannot find HTMLElement with id 'x' React iframe chrome extension

问题

我尝试在Chrome扩展程序的内容脚本中使用am5charts,而且它位于一个iframe内,使用React。

我尝试使用useRef()将htmlElement传递给am5charts。

  1. const chartRef = useRef<HTMLDivElement>();
  2. useEffect(() => {
  3. am5.ready(function () {
  4. const chartDoc = chartRef.current;
  5. const root = am5.Root.new(chartDoc);
  6. });
  7. }, []);

chartRef附加到返回的div元素上。

还尝试了const chartDoc = chartRef.current as HTMLDivElement;

在am5charts内部,检查我传递给am5.Root.new(chartDoc)的内容是否是HtmlElement,但它是React FiberNode对象...
从控制台调试的截图

英文:

I try use am5charts inside a chrome extension, content script and is inside a iframe, React.

I try to use useRef() to pass to am5charts the htmlElement.

  1. const chartRef = useRef&lt;HTMLDivElement&gt;();
  2. useEffect(() =&gt; {
  3. am5.ready(function () {
  4. const chartDoc = chartRef.current;
  5. const root = am5.Root.new(chartDoc);

chartRef is atached to a div in the return.

tried too const chartDoc = chartRef.current as HTMLDivElement;

inside of am5charts is checking if what i pass on am5.Root.new(chartDoc) is instanceof HtmlElement but is React FiberNode object...
screenshot from console debugging

答案1

得分: 0

这部分内容的中文翻译如下:

这个起作用了,可能有点巧妙。

  1. const chartRef = useRef<HTMLDivElement>();
  2. useEffect(() => {
  3. const chartDoc = chartRef.current;
  4. if (chartDoc.childNodes.length > 0) {
  5. return;
  6. }
  7. const chartDiv = document.createElement('div');
  8. chartDiv.style.height = '275px';
  9. chartDoc.appendChild(chartDiv);
  10. const root = am5.Root.new(chartDiv);
  11. });
英文:

This worked, maybe little bit hacky.

  1. const chartRef = useRef&lt;HTMLDivElement&gt;();
  2. useEffect(() =&gt; {
  3. const chartDoc = chartRef.current;
  4. if (chartDoc.childNodes.length &gt; 0) {
  5. return;
  6. }
  7. const chartDiv = document.createElement(&#39;div&#39;);
  8. chartDiv.style.height = &#39;275px&#39;;
  9. chartDoc.appendChild(chartDiv);
  10. const root = am5.Root.new(chartDiv);

huangapple
  • 本文由 发表于 2023年7月13日 17:22:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/76677821.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定