Я пытаюсь смонтировать портал React, чей узел является членом текущего компонента рендеринга. Как показано в приведенном ниже коде, я вынужден повторно выполнить его рендеринг, установив состояние в componentDidMount
, что кажется мне антипаттерном.
import React from 'react';
import PropTypes from 'prop-types';
import FormProduct from 'containers/FormProduct';
import Portal from 'shared/Portal';
class Users extends React.Component {
constructor(props) {
super(props);
this.productForm = React.createRef();
this.state = {
mounted: false,
}
}
componentDidMount() {
this.setState({ mounted: true});
}
render() {
return (
<React.Fragment>
<div className="mt-20" ref={this.productForm}></div>
{this.state.mounted && <Portal node={this.productForm.current}>
<FormProduct />
</Portal>}
</React.Fragment>
)
}
}
Как мы можем достичь этого при первом рендеринге?