(3)svelte 教程:响应式

(3)svelte 教程:响应式响应式值是指在 Svelte 中 当变量的值发生变化时 Svelte 会自动检测到变化并更新所有依赖于该变量的部分

(3)svelte 教程:响应式

什么是 Reactive Value 和 Reactive Statement

Reactive Value(响应式值)
响应式值是指在 Svelte 中,当变量的值发生变化时,Svelte 会自动检测到变化并更新所有依赖于该变量的部分。这使得开发者可以轻松地管理状态,并让UI自动反映这些状态的变化。

Reactive Statement(响应式语句)
响应式语句是一种特殊的语法,通过 $: 前缀标识。当任何响应式语句中依赖的变量发生变化时,该语句会重新执行。这可以用来自动更新某些计算值或执行一些副作用(如日志记录)。

逐行解释代码

<script> export let name; let beltColour = "black"; let firstName = "Jimi"; let lastName = "Hend"; $: fullName = `${ 
       firstName} ${ 
       lastName}`; $: { 
      console.log(beltColour); console.log(fullName); } </script> 
  • export let name;
    • 声明一个名为 name 的变量,并将其导出,使其成为一个可由父组件传递的属性。name 是响应式的,当父组件改变 name 的值时,Svelte 会自动更新使用 name 的地方。
  • let beltColour = "black";
    • 声明一个名为 beltColour 的变量,并将其初始值设置为 "black"。这是一个响应式值,当 beltColour 发生变化时,所有依赖它的地方都会自动更新。
  • let firstName = "Jimi";
    • 声明一个名为 firstName 的变量,并将其初始值设置为 "Jimi"。这是一个响应式值。
  • let lastName = "Hend";
    • 声明一个名为 lastName 的变量,并将其初始值设置为 "Hend"。这是一个响应式值。
  • $: fullName = \${firstName} ${lastName}`;`
    • 使用 $: 前缀声明一个响应式语句,计算 fullName 的值。当 firstNamelastName 发生变化时,这个语句会重新执行,更新 fullName 的值。
  • $: { console.log(beltColour); console.log(fullName); }
    • 这是一个块级的响应式语句,当任意依赖的响应式值发生变化时,整个块会重新执行。这里会打印 beltColourfullName 的当前值。当 beltColourfullName 发生变化时,控制台会显示相应的日志信息。
<main> <h1>Hello {name}!</h1> <p style="color: { 
       beltColour}">{fullName} {beltColour} belt</p> <input type="text" bind:value={firstName}> <input type="text" bind:value={lastName}> <input type="text" bind:value={beltColour}> </main> 
部分
  • <h1>Hello {name}!</h1>
    • 一个 HTML <h1> 素,使用 {name} 表达式将 name 变量的值插入到标题中。当 name 变量的值变化时,标题会自动更新。
  • <p style="color: {beltColour}">{fullName} {beltColour} belt</p>
    • 一个 HTML <p> 素,使用 {fullName}{beltColour} 表达式将 fullNamebeltColour 变量的值插入到段落中,同时将 beltColour 作为段落文本的颜色样式。当 fullNamebeltColour 变量的值变化时,段落的内容和样式会自动更新。
  • <input type="text" bind:value={firstName}>
    • 一个 HTML <input> 素,类型为文本输入框。使用 bind:value 语法将输入框的值与 firstName 变量进行双向绑定。当用户在输入框中输入内容时,firstName 变量会自动更新;反之,当 firstName 变量的值变化时,输入框的内容也会自动更新。
  • <input type="text" bind:value={lastName}>
    • 一个 HTML <input> 素,类型为文本输入框。使用 bind:value 语法将输入框的值与 lastName 变量进行双向绑定。其行为与 firstName 的输入框相同。
  • <input type="text" bind:value={beltColour}>
    • 一个 HTML <input> 素,类型为文本输入框。使用 bind:value 语法将输入框的值与 beltColour 变量进行双向绑定。当用户在输入框中输入内容时,beltColour 变量会自动更新;反之,当 beltColour 变量的值变化时,输入框的内容也会自动更新。

这个 Svelte 组件展示了如何使用响应式值和响应式语句来管理状态,并让 UI 根据数据的变化自动更新。

APP.svelte 完整代码如下:

<script> export let name; let beltColour = "black"; let firstName = "Jimi"; let lastName = "Hend"; $: fullName = `${ 
     firstName} ${ 
     lastName}`; // $: console.log(beltColour); $: { 
    console.log(beltColour); console.log(fullName); } // const handleClick = () => { 
    // beltColour = "orange"; // }; // const handleInput = (e) => { 
    // beltColour = e.target.value; // }; </script> <main> <h1>Hello { 
   name}!</h1> <p style="color: {beltColour}">{ 
   fullName} { 
   beltColour} belt</p> <!-- <button on:click={ 
   handleClick}>update belt colour</button> --> <!-- <input type="text" on:input={ 
   handleInput} value={ 
   beltColour}> --> <input type="text" bind:value={ 
   firstName}> <input type="text" bind:value={ 
   lastName}> <input type="text" bind:value={ 
   beltColour}> </main> <style> main { 
    text-align: center; padding: 1em; max-width: 240px; margin: 0 auto; } h1 { 
    color: #ff3e00; text-transform: uppercase; font-size: 4em; font-weight: 100; } @media (min-width: 640px) { 
    main { 
    max-width: none; } } </style> 
今天的文章 (3)svelte 教程:响应式分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-09 07:33
下一篇 2024-12-09 07:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/82017.html