为什么 React 入口是一个状态?
Why is the React portal a state?
React 门户网站上的文档:https://reactjs.org/docs/portals.html
正如标题所问,我不太清楚为什么门户是一种状态。我问的是关于渲染和 re-rendering 的技术细节,或者是否还有其他一些潜在原因。
为什么会是这样的状态:
const [container] = useState(document.createElement('div'));
而且不仅仅是一个常规变量,像这样:
const container = document.createElement('div');
编辑:
当我将容器放在 useState()
中时,它会更新 re-render content/children 而不会出现任何中断。当容器处于状态之外时,更新将变得不稳定。
只需执行 const container = document.createElement('div');
每次重新渲染都会创建一个新的 div,但是通过将其存储在未更改的状态下,React 只会 运行 该代码一次并保留抓住那个元素。
我有另一种方法。我没有将 createElement 调用添加到状态变量中,而是将它们移出了反应组件。
而不是这个
const ModalContainer = (props) => {
const [modalSection] = useState(document.createElement('section'));
//do stuff
}
这样做
const modalSection = document.createElement('section');
const ModalContainer = (props) => {
// Do stuff
// return stuff
}
React 门户网站上的文档:https://reactjs.org/docs/portals.html
正如标题所问,我不太清楚为什么门户是一种状态。我问的是关于渲染和 re-rendering 的技术细节,或者是否还有其他一些潜在原因。
为什么会是这样的状态:
const [container] = useState(document.createElement('div'));
而且不仅仅是一个常规变量,像这样:
const container = document.createElement('div');
编辑:
当我将容器放在 useState()
中时,它会更新 re-render content/children 而不会出现任何中断。当容器处于状态之外时,更新将变得不稳定。
只需执行 const container = document.createElement('div');
每次重新渲染都会创建一个新的 div,但是通过将其存储在未更改的状态下,React 只会 运行 该代码一次并保留抓住那个元素。
我有另一种方法。我没有将 createElement 调用添加到状态变量中,而是将它们移出了反应组件。
而不是这个
const ModalContainer = (props) => {
const [modalSection] = useState(document.createElement('section'));
//do stuff
}
这样做
const modalSection = document.createElement('section');
const ModalContainer = (props) => {
// Do stuff
// return stuff
}