您的位置:首页 > 教育 > 锐评 > vue3学习笔记

vue3学习笔记

2024/10/5 14:37:10 来源:https://blog.csdn.net/qq_43276836/article/details/137051755  浏览:    关键词:vue3学习笔记

目录

  • vue3学习笔记
    • 数据绑定 'v-bind' 简写为':',语法v-bind:id='变量'
    • v-on 指令通过 v-on:event="method" 语法工作,简写语法:@event="method"
    • v-model 绑定到你在其上设置的数据属性,并使其与 ``<input> ``保持同步
    • v-model修饰符.trim,将删除输入之前或之后的空格;.lazy 修饰符导致 v-model 使用 change 事件代替
    • 使用自定义事件将数据传递给父级
    • 当 Vue 组件的 data 属性中的数据发生变化时,Vue 会自动重新渲染与这些数据相关的部分。
    • 使用计算属性(在其他事情中)当模板发生变化时,保存属性的状态。
    • 虚拟 DOM 和模板引用,你往往不应该直接通过原生浏览器 API(如 Document.getElementById)来编辑你的 HTML 元素,因为这会导致 VDOM 和真实 DOM 不同步。
    • 关于html元素聚焦,前提是该元素能被聚焦
    • vue-router路由设置

vue3学习笔记

数据绑定 ‘v-bind’ 简写为’:',语法v-bind:id=‘变量’

v-on 指令通过 v-on:event=“method” 语法工作,简写语法:@event=“method”

<form @submit="onSubmit"></form>

v-model 绑定到你在其上设置的数据属性,并使其与 <input> 保持同步

v-model 适用于所有不同的输入类型,包括复选框、单选框和选择输入.

<inputtype="text"id="new-todo-input"name="new-todo"autocomplete="off"v-model="label"
/>

v-model修饰符.trim,将删除输入之前或之后的空格;.lazy 修饰符导致 v-model 使用 change 事件代替

当 v-model 同步文本输入的值时,此修饰符会发生变化。如前所述,v-model 同步通过使用事件更新变量来工作。对于文本输入,此同步使用 input 事件进行。通常,这意味着 Vue 在每次击键后都会同步数据。.lazy 修饰符导致 v-model 使用 change 事件代替。这意味着 Vue 只会在输入失去焦点或提交表单时同步数据。
要同时使用 .lazy 修饰符和 .trim 修饰符,我们可以将它们链接起来,例如 v-model.lazy.trim=“label”。

使用自定义事件将数据传递给父级

  1. 自定义事件发射
this.$emit("todo-added",参数);
  1. v-on监听事件
<to-do-form @todo-added="addToDo"></to-do-form>
  1. 触发函数读取事件参数
 addToDo(toDoLabel) {console.log('To-do added:', toDoLabel);}

当 Vue 组件的 data 属性中的数据发生变化时,Vue 会自动重新渲染与这些数据相关的部分。

示例

<template><div><ul><li v-for="item in ToNotDoItems" :key="item.id">{{ item.label }}</li></ul><button @click="addItem">Add Item</button></div>
</template><script lang="ts">
import uniqueId from "lodash.uniqueid";export default {methods: {addItem() {this.ToNotDoItems.push({id: uniqueId("todo-"),label: "New item",done: false,});},},data() {return {ToNotDoItems: [{ id: uniqueId("todo-"), label: "Learn Vue", done: false },{id: uniqueId("todo-"),label: "Create a Vue project with the CLI",done: true,},{ id: uniqueId("todo-"), label: "Have fun", done: true },{ id: uniqueId("todo-"), label: "Create a to-do list", done: false },],};},
};
</script>

在这个示例中,我们添加了一个 addItem 方法,该方法会在点击按钮时被调用,并向 ToNotDoItems 数组中添加一个新的待办事项。

当 ToNotDoItems 数组的内容发生变化时,Vue 会自动重新渲染与 ToNotDoItems 相关的部分,以反映这些变化。

使用计算属性(在其他事情中)当模板发生变化时,保存属性的状态。

data()中的属性在templates重新渲染时不会保存当前的值。computed可以避免这个问题。

虚拟 DOM 和模板引用,你往往不应该直接通过原生浏览器 API(如 Document.getElementById)来编辑你的 HTML 元素,因为这会导致 VDOM 和真实 DOM 不同步。

Vue 和其他一些框架一样,使用一个虚拟 DOM(VDOM)来管理元素。这意味着 Vue 在内存中保留了我们应用程序中所有节点的表示。任何更新首先在内存中的节点上执行,然后所有需要对页面上的实际节点进行的更改都会被批量同步。

由于读写实际的 DOM 节点通常比虚拟节点开销更大,虚拟 DOM 可以带来更好的性能。然而,这也意味着在使用框架时,你往往不应该直接通过原生浏览器 API(如 Document.getElementById)来编辑你的 HTML 元素,因为这会导致 VDOM 和真实 DOM 不同步。

相反,如果你需要访问底层 DOM 节点(比如设置焦点时),你可以使用 Vue 模板引用。对于自定义的 Vue 组件,你也可以使用 refs 来直接访问子组件的内部结构,然而这样做应该是谨慎的,因为这会使代码更难推理和理解。

要在一个组件中使用模板引用,你需要在你想访问的元素上添加一个 ref 属性,并为该属性的值添加一个字符串标识符。值得注意的是,在一个组件中,引用必须是唯一的。在同一时间呈现的两个元素不应该有相同的引用。

关于html元素聚焦,前提是该元素能被聚焦

哪些元素支持聚焦

a[href] a标签必须带有href,不带href的a不能聚焦
area[href]
input:not([disabled]) 表单元素,disabled的不能聚焦
select:not([disabled])
textarea:not([disabled])
button:not([disabled]) 按钮同样是不能disabled
iframe
[tabindex] 带有tabindex的元素
[contentEditable=true] 带有contentEditable的元素

例如,我们需要给我们的列表标题添加一个引用。我们还需要给它添加一个 tabindex=“-1”,这使得该元素可以通过程序聚焦(即可以通过 JavaScript 聚焦),而默认情况下它是不可以的。

<h2 id="list-summary" ref="listSummary" tabindex="-1">{{listSummary}}</h2>

tabindex 用法
https://blog.csdn.net/xrk_ffgg/article/details/103670984

vue-router路由设置

  1. 安装
npm install vue-router@4
  1. src目录下增加router文件夹,新建router.ts

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com