Svelte 生命周期函数全例子演示

摘要:
本文使用一个示例来演示Svelte中所有生命周期函数的用法。状态);{#ifstatus}<Child/>{/if}<button:click={toggle}>{desc}$nextTick<Script>import{onMount,onDestroy,beforeUpdate,afterUpdate,tick}from“svelte”;nextTick();//statesetstatus=false;//计算的$:updateVal=状态?

正文

用一个例子演示 Svelte 中所有生命周期函数的用法(实际上就是记几个单词)。

下面是父组件:App.svelte,子组件的挂载、卸载都靠它触发:

<script>
  import Child from "./Child.svelte";

  // state
  let status = false;

  // computed
  $: desc = status ? "销毁子组件" : "挂载子组件";

  // methods
  const toggle = () => (status = !status);
</script>

{#if status}
  <Child />
{/if}

<button on:click={toggle}>{desc}</button>

下面是子组件,值得注意的有两点:

  1. beforeUpdate 和 afterUpdate 在创建之前就会触发
  2. tick() 函数功能类似 Vue 的 this.$nextTick
<script>
  import { onMount, onDestroy, beforeUpdate, afterUpdate, tick } from "svelte";

  nextTick();

  // state
  let status = false;

  // computed
  $: updateVal = status ? " ,我更新啦!" : "";

  // life cycle
  onMount(() => {
    alert("子组件创建好啦");
    setTimeout(() => {
      status = true;
    }, 5000);
    // 在组件销毁时调用, 调用时机晚于 onDestroy
    return () => {
      alert("子组件被销毁咯");
    };
  });

  onDestroy(() => {
    alert("正经的卸载函数");
  });

  beforeUpdate(() => {
    alert("组件即将更新咯");
  });

  afterUpdate(() => {
    alert("组件已经更新啦");
  });

  // methods
  async function nextTick() {
    await tick();
    alert("下一个 Tick 触发");
  }
</script>

<h1>我是子组件{updateVal}</h1>

总结

触发顺序:beforeUpdate、onMount、afterUpdate、tick()、beforeUpdate()、afterUpdate()、onDestroy()

参考

免责声明:文章转载自《Svelte 生命周期函数全例子演示》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Markdown基础语法12个不可不知的Sublime Text应用技巧和诀窍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

CentOS 7 优化TCP链接

在优化服务器配置时,Summary发现服务器端的WAIT连接上有大量的TIME,需要进行优化。Tomcat案例查询与Tomcat对应的端口的tcp链接,发现存在大量TIME_WAIT链接,以及一些其他状态连接,总计400+。...

试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

解决方法:iis应用程序池--˃高级设置--˃启用32位应用程序˂!body{font-family:"Verdana";font-weight:normal;font-size:.7em;color:black;}p{font-family:"Verdana";font-weight:normal;color:black;margin-top:-5px}b...

Oracle 12c新特性(For DBA)

2: Oracle12cIn-MemoryOracle12cIn-Memory提供了一种独特的双格式体系结构,它可以使用传统的行格式和新的内存列格式同时在内存中存储表。与其他NOSQL分片结构相比,OracleSharding提供了优异的运行时性能和更简单的生命周期管理。OracleSharding使用GDS体系结构自动部署和管理分片和复制技术。GDS还提供...

2022年可用QQ机器人框架

4.小李子机器人官网:https://xiaolz.cn评估:支持多个Q登录和论坛似乎是目前最活跃的。它支持许多api,可以满足许多需求。没有限制,但有很多错误。...

ORACLE无法删除当前连接用户

今天在做Oracle数据库是遇到ORACLE无法删除当前连接用户,经查找可用如下方法解决。SQL˃dropuseracascade;//删除用户以及用户表空间下所有对象用户已丢弃。...

easyexcel导出两种方式response返回文件流下载和保存到服务器返回下载链接

1、response方式返回excel文件流@GetMapping("/exportExcel")publicvoidexportExcel(@RequestParam(value="menu")Stringmenu,@RequestParam(value="dwflglId")intdwflglId,@RequestParam(value="qjCode"...