vue 3 —— 笔记(模板语法,响应式变量)

模板语法:

Vue 使用一种基于 html 的模板语法,使我们能声明式将其组件实例绑定到呈现的 dom 上

文本插值

基础数据绑定形式 双大括号 会替换相应组件实例 msg 属性的值

原始html

 双大括号会将数据解释为纯文本 不是html 想插入html 使用 v-html 指令

 <div v-html="html"></div>

  let html = "<p>99999</p>";

属性绑定

双大括号不能在 html 属性中使用,想要响应式的绑定一个属性 使用 v-bind指令

简写  :id ='dhynameid'

动态绑定多个值   通过不带参数的 v-bind 可以将它们绑定到单个元素上

使用 javeScript 表达式

这些表达式 会作为 javescript, 当前组件实例为作用域解析执行

Vue3 模板语法基本上和 Vue2 是一样的,但是有一些新的改进和特性。

  1. 插值:在模板中使用双大括号 {{ }} 语法进行数据绑定,例如 {{ message }}。可以在插值语法中使用 JavaScript 表达式,例如 {{ message.toUpperCase() }}

  2. 指令:使用指令可以对元素进行动态绑定和操作。常用指令包括 v-if 控制元素显示与隐藏、v-for 遍历数组生成列表、v-model 实现双向数据绑定等。

  3. 事件绑定:通过 @ 符号可以绑定事件监听器,例如 @click="handleClick"。事件监听器可以接受参数,例如 @click="handleClick(args)"

  4. 属性绑定:使用 v-bind 或简写符号 : 可以动态绑定元素属性,例如 v-bind:src="imageSrc" 或 :src="imageSrc"

  5. 动态类名和样式:使用 v-bind:class 和 v-bind:style 可以动态绑定元素的类名和样式。也可以直接在标签上使用对象或数组的方式绑定类名和样式。

  6. 插槽:插槽是 Vue 提供的一种灵活的组件内容分发机制。使用 v-slot 或其简写符号 # 可以定义插槽,为组件提供灵活的内容分发方式。

响应式

声明响应式状态

可以使用 reactive() 创建一个响应式对象或数组  

响应式对象其实就是 JavaScript proxy ,其行为表现于一般对象相似

不同之处在于vue能够跟踪响应式对象属性的访问与更改操作

要在组件中使用 响应式变量 需要在setup函数中定义并返回 // setup 是一个用于组合式api的特殊钩子函数

<script setup>

可以构建工具简化改操作

DOM更新时机

当更改响应式状态后,DOM会自动更新。然而,DOM的更新不是同步的,相反,vue将

缓冲它们知道更新周期的下个时机,以确保无论你进行了多少次状态更改,每个组件只更新一次

若要等待一个状态改变后的DOM更新完成,可以使用 nextTick() 这个全局api

深层响应性

在vue中,状态都是默认深层响应式的,这意味着即使在更改深层次的i对象或数组,改动也能被检测

响应式代理 vs. 原始对象

只有代理对象是响应式的,更改原始对象不会触发更新,因此,使用 vue 的响应式系统的

最佳实践式 仅使用你声明对象的代理版本

 

对同一个对象调用总是返回同样的代理对象,而对一个已存在的代理对象调用reactive 会返回本身

 

 

Reactive() 的局限性

 reactive() api有两条限制性

  1. 仅对对象类型有效(对象,数组和map,set这样的集合类型),对基础类型无效
  2. Vue的响应式是通过属性访问进行追踪的,因此我们必须保持对象的相同引用,这意味着我们不可以随意替换一个响应式对象

将响应式对象的属性赋值或结构至本地变量是,或是该属性传入一个函数,会失去响应性

 

用 ref 定义响应式变量

 ref允许我们可以创建任何类型值的响应式           

 ref 将传入参数包装一个带.value属性的ref对象

 和响应式的对象属性类似,ref的.value也是响应式的 

 ref 被传递给函数或是从一般对象被结构时 不会丢失响应性

 ref 在模板中使用时,会自动解包,无需使用.value

 ref在对象中会解包 数组中不会

上一篇:使用Docker安装ElasticSearch(8.12.2)、Kibana(8.12.2)


下一篇:商家数据库(37-40)