Stencil.js中componentWillLoad调用时机及@Prop变更时重复执行疑问
Stencil.js中componentWillLoad的调用时机
componentWillLoad是Stencil组件的生命周期钩子,仅在组件首次挂载到DOM之前执行一次,组件挂载完成后,无论后续@Prop字段如何更新,这个钩子都不会再次触发。- 它的设计目的是在组件首次渲染前完成初始化工作,比如预加载数据、处理初始Prop值等,执行时机早于
componentWillRender。
针对你提到的父子组件场景:
- 父组件先给子组件的
@Prop字段赋初始值,之后更新为新值,子组件的componentWillLoad不会执行两次——因为子组件只被挂载到DOM一次,Prop更新属于组件已挂载后的状态变更,不会触发重新挂载。 - 你观察到的“componentWillLoad再次执行”,大概率是因为父组件中存在条件渲染逻辑(比如类似
*ngIf的切换),导致子组件被卸载后重新挂载,这种情况下才会再次触发componentWillLoad。
如果需要监听@Prop字段的变化,应该使用componentWillUpdate钩子或者@Watch()装饰器,这两个才是专门用于处理Prop更新的生命周期方法。
内容的提问来源于stack exchange,提问作者Robert Pandele
相关产品推荐
相关产品推荐

