У меня есть простой компонент портала реакции. Сначала я написал это в компоненте класса, и все работает очень хорошо. Но я решил переписать это в функциональную составляющую. И после этого портал генерирует только div внутри портала div #, но без дочерних элементов внутри. Понятия не имею, в чем ошибка.
// Functional Component
import React, { useEffect } from 'react';
import { createPortal } from 'react-dom';
const Lightbox = ({ children }) => {
const portalRoot = document.getElementById('portal');
const el = document.createElement('div');
useEffect(() => {
portalRoot.appendChild(el);
return () => portalRoot.removeChild(el);
}, []);
return createPortal(children, el);
};
export default Lightbox;
// Class component
// import { Component } from 'react';
// import ReactDOM from 'react-dom';
// const portalRoot = document.getElementById('portal');
// export default class Lightbox extends Component {
// constructor() {
// super();
// this.el = document.createElement('div');
// }
// componentDidMount = () => {
// portalRoot.appendChild(this.el);
// };
// componentWillUnmount = () => {
// portalRoot.removeChild(this.el);
// };
// render() {
// const { children } = this.props;
// return ReactDOM.createPortal(children, this.el);
// }
// }