根据我们的经验,考虑了UI在任何给定时刻的外观,而不是如何随时间进行更改,这消除了一整类的bug。
据我所知,这意味着React仅更新必要的内容,而不是破坏并重新构建整个DOM树。我错了吗?
任何人都可以帮助我理解引用的声明吗?
谢谢。
据我所知,这意味着React仅更新必要的内容,而不是破坏并重新构建整个DOM树。我错了吗?
如果您想知道简短的答案,我必须说这是true,React将在需要时更新DOM中的必要元素。
但是,如果您想知道它是如何完成的,以及当React将更新DOM及其元素时,我必须使用proper methods改变不同的几件事,例如project architecture钩在功能组件中,例如useCallback
,useMemo
等)等等。
据我所知,React找到了两种方法来重新渲染DOM。
将元素传递到ReactDOM.render
更新状态
这将从render()
调用react-dom
方法(通常将其作为ReactDOM导入),它将把React元素呈现到提供的容器中的DOM中,并返回对该组件的引用(或返回null
用于无状态组件)。同样,如果React元素先前已渲染到容器中,它将对它执行更新,并且仅在必要时才更改DOM以反映最新的React元素。
state
对象是存储属于该组件的属性值的位置。因此,当您拥有一个组件并且该组件具有其自己的特定变量时,更改它们会影响DOM,您应该使用它,然后只要[[state进行更改,该组件就会被更新。所以,当我上面没有提及任何内容时,我什至谈论项目架构和这些东西?
假设我们有一个项目,其中有一个父组件和三个子组件,就像这样:Component 1
- |- Component 2
- - |- Component 3
- - - |- Component 4
因此,每当您在发生更改时,它将强制父级重新呈现,然后整个DOM将在每个[[state更改中重新呈现一次。最后注释因此,总的来说,对于我们的项目,或者当它必须使用诸如Component 4
中使用state
时,所有DOM元素都将被重新渲染,为什么呢?因为Component 4
是Component 3
的子级,依此类推,所以当子级[[state
useMemo
之类的内置方法来避免这种情况时,我们应该始终被视为一个好的架构和层次结构。