React门户是React框架中的一种特殊组件,用于将子组件渲染到指定的DOM节点上。React门户通常用于创建弹出框、模态框、菜单等需要脱离父组件的DOM结构的情况。在React门户中,可以使用无状态功能组件(SFC)来定义子组件。
无状态功能组件是一种纯函数式组件,它只接受props作为输入,并返回一个React元素作为输出。无状态功能组件没有内部状态(state),也没有生命周期方法,因此它们更加简单和高效。在React门户中使用无状态功能组件可以帮助我们更好地组织代码,并提高组件的可复用性和可测试性。下面是一个使用无状态功能组件在React门户中的示例代码:javascriptimport React from 'react';import ReactDOM from 'react-dom';const Modal = ({ isOpen, onClose, children }) => { if (!isOpen) return null; return ReactDOM.createPortal( {children} , document.getElementById('modal-root') );};const App = () => { const [isModalOpen, setIsModalOpen] = React.useState(false); const handleOpenModal = () => { setIsModalOpen(true); }; const handleCloseModal = () => { setIsModalOpen(false); }; return ( React Portal Example
Modal Content
This is an example of using React Portal with a modal component.
);};ReactDOM.render( , document.getElementById('root'));在上面的示例代码中,我们定义了一个`Modal`组件,它接受`isOpen`、`onClose`和`children`作为props。当`isOpen`为`true`时,`Modal`组件将使用`ReactDOM.createPortal`方法将其子组件渲染到`modal-root`元素下,实现了脱离父组件的DOM结构。在`App`组件中,我们使用了无状态功能组件`Modal`来创建一个模态框。当点击`Open Modal`按钮时,`isModalOpen`状态将被设置为`true`,从而显示模态框。模态框的内容包括一个标题`