Por ReactDOM.createPortal não funciona na minha conteúdo do script?

0

Pergunta

Eu tenho um conteúdo.tsx arquivo com o código a seguir:

import React from "react";
import {createPortal} from 'react-dom';

import Text from './Text';

console.log(`Content script...`);

createPortal(
    <Text/>,
    document.body
);

"Texto" código do componente:

import React from 'react';

const Text = () => {
    return (
        <div>
            Just text...
        </div>
    );
};

export default Text;

Meu manifesto inclui:

...other keys
"content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["./static/js/content.js"],
      "run_at": "document_end"
    }
]

Como você pode ver, o arquivo é carregado e a mensagem Content script ... é impressa no console. https://i.stack.imgur.com/GS0gK.png

Mas a div com o texto Just text... não foi adicionado ao corpo, em outras palavras, createPortal não funciona. https://i.stack.imgur.com/j2geh.png

1

Melhor resposta

1

você precisa escrever createPortal dentro return ou render,

como esta:

render() {
    return ReactDOM.createPortal(
         this.props.children,
         document.body
     );
}
2021-11-15 13:13:41

Eu criei um codesandbox para você, e ele esta funcionando perfeitamente bem, você pode check-out: codesandbox.e / s/s/de magos-em cache-2vfby?arquivo=/src/conteúdo.jsx
Pradip Dhakal

Eu verifiquei, o código não funciona no meu caso, mas eu era capaz de entender a natureza do meu problema, obrigado.
user17418364

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................