组件的挂载和渲染

本文解析React组件的挂载和渲染概念,指出挂载是初次添加到DOM,渲染是状态变化后更新UI。强调挂载与后续状态更新的区别,承诺后续深入源码剖析。

React的挂载和渲染

React的生命周期中包括三个主要的阶段:挂载、渲染以及卸载。

很多小伙伴包括我自己可能对挂载和渲染的概念比较模糊,今天这篇文章主要的目的是为了解答我们的这个小疑惑~

这张图是从其他地方搬运过来的,这张图中描述的主要是class组件的过程。
在这里插入图片描述
通过这张图,我们知道【挂载】是发生在class组件的constructor之后的,我们可以理解为挂载其实就是首次渲染,通过componentDidMount的含义也可以知道这个生命周期描述的是组件挂载完成,即它前面的render函数已经将JSX转换为了DOM结构。表明现在DOM树结构是已经搭建好了。

后续由于props或者state更新引起的重新渲染,是与【挂载】这个概念完全无关的,涉及的变化都是渲染,即重新渲染。因为我们的DOM树是在页面打开的时候进行首次挂载的,后面的变化都是在原有DOM树的结构上去进行更新。

好的,下面我们来总结一下:
React的挂载和渲染是两个不同的概念,它们在React组件的生命周期中的不同阶段发生。

  • 挂载(Mounting)是指React组件被添加到DOM中的过程。当组件第一次被加载到页面上时,React会将组件实例化,并将组件渲染成真实的DOM节点,最后将该节点插入到页面中指定的位置。

  • 渲染(Rendering)是指React组件在更新时重新绘制UI的过程。当组件的状态发生变化时,React会重新执行渲染函数并生成一个新的虚拟DOM树。然后React将新的虚拟DOM树与旧的虚拟DOM树进行比较,找出需要更新的部分,并将变化的部分渲染到真实的DOM节点中。

相信通过上面的分析,我们对于挂载和渲染的概念有了一定的认知,后续我会从源码角度进行分析,不断鞭策自己成长~

### 三级标题:Vue 父子组件挂载顺序详解 在 Vue 应用中,父子组件的生命周期钩子函数具有明确的执行顺序,这对组件间的数据通信依赖管理具有重要意义。在组件挂载阶段,父组件组件的生命周期钩子函数依次执行,确保组件树的正确渲染。 在初始化阶段(首次渲染),首先执行父组件的 `beforeCreate`,此时 Vue 实例刚刚创建,数据观测事件配置尚未完成。随后执行父组件的 `created`,该阶段已完成数据观测方法绑定,但 DOM 还未生成。接着执行父组件的 `beforeMount`,表示模板编译完成,即将挂载到 DOM。 此时开始进入子组件的生命周期流程。子组件依次执行 `beforeCreate`、`created` `beforeMount`。当子组件完成这些初始化步骤后,进入 `mounted` 阶段,表示其 DOM 已完成挂载并可进行 DOM 操作。此时父组件的 `mounted` 钩子函数才被调用,表示父组件及其所有子组件均已挂载完成 [^1]。 该顺序确保了父组件挂载自身之前,子组件已经完成挂载操作,从而保证了父子组件间的数据传递 DOM 操作的正确性。例如,在父组件的 `mounted` 钩子中,可以安全地访问子组件的 DOM 元素或调用其方法。 ```javascript // 父组件示例 export default { mounted() { console.log('父组件挂载'); } }; // 子组件示例 export default { mounted() { console.log('子组件挂载'); } }; ``` 在开发过程中,若父组件依赖异步数据传递给子组件,则应确保在父组件的 `mounted` 钩子中进行数据的初始化或更新,以避免子组件因数据未就绪而无法正确渲染 [^2]。 ### 三级标题:相关机制与注意事项 在 Vue 中,父子组件的生命周期不仅影响挂载顺序,还涉及更新销毁阶段的执行流程。例如,在数据更新过程中,父组件的 `beforeUpdate` 先于子组件的 `beforeUpdate` 执行,而子组件的 `updated` 则在父组件之前完成。这一机制确保了组件更新的顺序性,避免因异步更新导致的视图不一致问题。 组件销毁阶段同样遵循父子顺序:父组件的 `beforeDestroy` 先执行,随后是子组件的 `beforeDestroy` `destroyed`,最终父组件的 `destroyed` 被调用。这种顺序确保了在销毁过程中,子组件资源能够被正确释放后再处理父组件的销毁逻辑 [^2]。 此外,在使用 `mixin` 混入机制时,混入的生命周期钩子会与组件自身的钩子合并,并按照混入顺序依次执行。混入的钩子在组件钩子之前运行,确保混入逻辑不会干扰组件自身的初始化流程 [^2]。 ### 三级标题:总结 通过理解 Vue 父子组件挂载顺序,可以更好地控制组件间的依赖关系数据流。父组件的 `beforeMount` `mounted` 钩子分别在子组件挂载前后执行,为组件通信 DOM 操作提供了可靠的执行时机。开发过程中应合理利用这些生命周期钩子,确保组件渲染数据更新的正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值