首页 > 其他分享 >Stemciljs学习2、组件生命周期

Stemciljs学习2、组件生命周期

时间:2022-12-03 15:00:44浏览次数:58  
标签:Stemciljs 生命周期 console log text Prop 组件

组件有许多生命周期方法,可用于了解组件何时“将”和“执行”加载、更新和呈现。可以将这些方法添加到组件中,以便在正确的时间挂接到操作中。

在组件类中实现以下方法之一,Stencil 将以正确的顺序自动调用它们:

单组件的生命周期

import { Component, Host, h, Prop, Watch } from '@stencil/core';

@Component({
  tag: 'web-text',
  styleUrl: 'web-text.css',
  shadow: true,
})
export class WebText {
  @Prop() text: string;

  @Watch('text')
  handlerTextWatcher(val: string, oldVal: string) {
    console.log('新值:', val, ',旧值:', oldVal);
    console.log('生命周期:watch');
  }

  connectedCallback() {
    console.log('生命周期:connectedCallback');
  }

  componentWillLoad() {
    console.log('生命周期:componentWillLoad');
  }

  componentWillRender() {
    console.log('生命周期:componentWillRender');
  }

  render() {
    console.log('生命周期:render');
    return <Host>{this.text}</Host>;
  }

  componentDidRender() {
    console.log('生命周期:componentDidRender');
  }

  componentDidLoad() {
    console.log('生命周期:componentDidLoad');
  }

  componentShouldUpdate() {
    console.log('生命周期:componentShouldUpdate');
  }

  componentWillUpdate() {
    console.log('生命周期:componentWillUpdate');
  }

  componentDidUpdate() {
    console.log('生命周期:componentDidUpdate');
  }

  disconnectedCallback() {
    console.log('生命周期:disconnectedCallback');
  }
}

未更改Prop text时console输入的结果

Snipaste_2022-12-03_14-33-47.png

更改Prop text后console输出的结果

Snipaste_2022-12-03_14-34-05.png

具体的生命图示如下(源自官方网站)

Untitled-1.svg

更多生命周期相关的细节请参考官方网站

如果要更改PropState的值,建议在componentWill开头的生命周期中去更改,因为带will的生命周期会在组件渲染前执行,在did生命周期内区修改PropState的值,有可能会造成死循环;如果必须在did生命周期内区修改PropState的值,请一定要做好前置判断

嵌套组件的生命周期

<component-a> 
    <component-b> 
        <component-c></component-c> 
    </component-b> 
</component-a>
  1. component-a - componentWillLoad()
  2. component-b - componentWillLoad()
  3. component-c - componentWillLoad()
  4. component-c - componentDidLoad()
  5. component-b - componentDidLoad()
  6. component-a - componentDidLoad()

结束语

上一篇中)我们讲解了如何使用stemcil-cli
搭建组件库的方式;那么经过本篇的讲解,我们已经了解了其组件的生命周期;下一篇将讲解stenciljs的相关装饰器。

标签:Stemciljs,生命周期,console,log,text,Prop,组件
From: https://www.cnblogs.com/guojikun/p/16947694.html

相关文章

  • k8s篇-k8s集群架构及组件详解【史上最详细】
    Okubernetes简介k8s是什么k8s是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可以促进声明式配置和自动化。k8s能做什么1)服务发现和负载......
  • K8S 核心组件 kubelet 与 kube-proxy 分析
    kubeletkubelet进程用于处理master下发的任务,管理pod中的容器,注册自身所在的节点.节点管理启动参数说明--register-node#如果设置为true则会向apiserver......
  • Flutter不常用组件(三)
    IntrinsicHeight创建一个将其子级大小调整为子级固有高度的小部件。它有以下几个属性:Key?key:标识键Widget?child:子组件如果我们有以下布局界面:Card(child:Ro......
  • React类组件写法与函数式组件写法
    React组件写法classMyButtonextendsReact.Component{constructor(props){//继承父类的构造函数super(props);this.state={openStatus:false}}}render(){retur......
  • 微信小程序开发笔记 - 小程序的四种生命周期函数
    小程序的四种生命周期函数目录小程序的四种生命周期函数1.应用的生命周期函数2.页面的生命周期函数3.组件的生命周期函数4.组件所在页面的生命周期函数生命周期是指......
  • 组件化与模块化
    单文件组件创建项目在cmd输入npminitvite-appvue3_demovue3_demo是文件夹名(项目名)在vscode中打开,开发项目写代码都在src目录下面写再进入项目中下载依赖npmi......
  • SignalR 循序渐进(四) Hub的生命周期以及IoC
    有阵子没更新这个系列了,最近太忙了。本篇带来的是Hub的生命周期以及IoC。首先,Hub的生命周期,我们用一个Demo来看看:publicclassTestHub:Hub{publicTe......
  • SignalR循序渐进(三)简易的集群通讯组件
    上一篇演示了泛型Hub的实现,微软于6月17日更新了SignalR2.1.0,然后自带了泛型Hub,于是就不需要自己去实现了…(微软你为啥不早一个月自带啊…)。不过没关系,SignalR出彩之处不在......
  • 小程序分包放置echarts组件
    app.json"subPackages":[{"root":"commonPackage","pages":[]}],pages同级目录加commonPackage分包中放入echarts组件信息使用xx.js......
  • ReactHook父组件调用子组件的方法,且子组件用了connect
    ReactHook父组件调用子组件的方法,且子组件用了connect子组件1、引入useImperativeHandle,forwardRef2、子组件由function改成let,接收prop和ref,并从props中结构出refI......