vue:标签属性绑定Vue实例【ref,reactive,内置指令v-bind,v-on】,预定义变量、方法【$methods,$computed】

Vue2、3组件通信、双向绑定、插槽slot、内置指令_组件双向绑定-CSDN博客
​Vue2,3响应式原理,ref和reactive,toRef和toRefs,shallowRef和shallowRefs_vue2 shallowref-CSDN博客

vue2【Options 选项API、mixin混入】,vue3【Composition 合成API、hooks】_vue3 hooks 转 vue2 mixin-CSDN博客
​Vue2、3【响应式原理、API类型、生命周期、fragment】-CSDN博客

目录

vue2.3对比版官方文档

常数:""

变量绑定

文本内容:插值{{}}

属性值:内置指令v-bind简写:,绑定属性到 Vue 实例中的数据

vue实例数据->标签

vue2:data(){return {属性:初始值}}

vue3:ref(基本类型),reactive(引用类型)

computed计算值:监听多值,有缓存,依赖值发生变化触发重算,用于计算

vue2 函数

vue3对象字面量

vue实例数据<->标签

v-model:modelValue简写为v-model

v-model=v-bind(:)+v-on(@)

vue2:一个元素一个v-model,可自定义prop+event名

vue3:一个元素可多个v-model,修饰符,可用在自定义组件

vue实例方法<-标签

内置指令v-on简写@,监听DOM事件、触发Vue实例中的方法

内联事件处理器中访问事件参数

事件修饰符

 vue2:methods

vue3.2之前:setup、方法名=()=>{}、return


vue2.3对比版官方文档

常数:""

<p>Hello</p>
<img src="logo.png" alt="Logo">

变量绑定

文本内容:插值{{}}

<p>{{ message }}</p>
<p>{{ calculateBooksMessage() }}</p>

属性值:内置指令v-bind简写:,绑定属性Vue 实例中的数据

内置指令:数据/事件关联DOM

数据事件处理程序DOM 元素关联,以实现动态数据渲染、事件处理、条件渲染、循环渲染等功能。

<div v-bind:id="id"></div>
<div :id="id"></div>

vue实例数据->标签

vue2:data(){return {属性:初始值}}

export default {data() {return {url: 'https://vuejs.org/'};}
}

vue3:ref(基本类型),reactive(引用类型)

<script setup>import { ref, reactive, toRefs } from "vue"const name = ref('参宿')const state = reactive({name: 'Jerry',sex: '男'})
</script>

computed计算值:监听多值,有缓存,依赖值发生变化触发重算,用于计算

  • 计算属性本质上是 computed watcher
  • 缓存通过dirty控制
  • 初始化时,计算属性并不会立即计算(vue的优化)
  • 都支持函数(仅可读)、对象字面量(可写)写法

对象字面量:{键值对},不使用类或者构造函数构建对象

Vue 会将数据变化缓冲在一个队列中,然后在一个事件循环中的下一个 tick(微任务队列)中才会执行更新 DOM 和触发相应的 Watcher 回调函数。

宏任务,微任务,事件循环event loop、setTimeout,setInterva、nextTick与process.nextTickl区别【示例讲解】_process.nexttick和vue的nexttick的区别-CSDN博客

vue2 函数

运行 this.fullName = 'John Doe' 时,收到警告

export default {data() {return {firstName: 'John',lastName: 'Doe'}},computed:{//  fullName计算属性的 getterfullName(){return this.firstName + ' ' + this.lastName}}}
}
vue3对象字面量

运行 this.fullName = 'John Doe' 时,setter 会被调用, this.firstName 和 this.lastName更新

<template><div><p>Full Name: {{ fullName }}</p></div>
</template>
<script setup lang="ts">
import { ref, computed } from 'vue'const firstName = ref('John')
const lastName = ref('Doe')
//显式指定类型
const double = computed<number>(() => count.value * 2);const fullName = computed({// getterget() {return firstName.value + ' ' + lastName.value},// setterset(newValue) {// Note: we are using destructuring assignment syntax here.[firstName.value, lastName.value] = newValue.split(' ')}
})
</script>

vue实例数据<->标签

v-model:modelValue简写为v-model

// 可绑定多个v-model
<childv-model="state.name"v-model:age="state.age"
/>

除了传递基本的值之外,还可以传递其他类型,比如对象或数组。

主要用于表单元素(如输入框、复选框、单选框等input, textarea,select,radio,checkbox等用户输互动入事件)

v-model=v-bind(:)+v-on(@)

<input v-model="searchText">
语法糖 等价于:
<input:value="searchText"@input="searchText = $event.target.value"
>

语法糖,简单来说就是『便捷写法』。

『双向绑定』当用户在输入框中输入文本时,userMessage 的值会实时更新,并且当 userMessage 的值改变时,输入框中的值也会自动更新。

『单向数据流』总结起来其实也就8个字:『数据向下,事件向上』。

单向数据流8字真诀

vue2:一个元素一个v-model,可自定义prop+event名

*model 选项自定义 prop 和 event 的名称 

默认情况下,v-model 会使用组件的 value 属性作为 prop 名,使用 input 事件来触发更新。

// 默认的 model 属性
export default {model: {prop: 'value',event: 'input'}
}

v-model="foo" 就完全等价于 :value="foo" 加上 @input="foo = $event"

  1. 适应不同的数据源,与其他组件集成不会产生命名冲突

  2. 提高代码可读性: 比起value更具有语义,使其他开发者更容易理解组件的预期用法和行为。

<!-- CustomInput.vue -->
<template><input :value="internalValue" @input="updateParentValue" />
</template><script>
export default {props: {// 使用自定义的 prop 名 customPropcustomProp: String,},// 通过 model 选项自定义 v-model 的 prop 和事件名model: {prop: 'customProp',event: 'customEvent'}data() {return {internalValue: this.customProp};},methods: {// 使用自定义的事件名 customEventupdateParentValue(event) {this.internalValue = event.target.value;// 触发自定义事件,通知父组件更新值this.$emit('customEvent', this.internalValue);}},};
</script>

*副作用:当绑定响应式对象上不存在的属性,会让它响应式

// template中:
<el-input v-model="user.tel"></el-input>
// script中:
export default {data() {return {user: {name: '参宿7',}}}
}
vue3:一个元素可多个v-model,修饰符,可用在自定义组件

.trim:自动过滤输入的首尾空白字符。

.number:自动将用户的输入转为数值类型。

.lazy:将 实时更新input 事件改为移出输入焦点回车的 change 事件,适用于大量输入,或者需要精确验证(邮件、号码)

<input v-model.trim="message"> <!-- 过滤首尾空白字符 -->
<input v-model.number="age"> <!-- 将输入转为数值 -->
<input v-model.lazy="message"> <!-- 使用 change 事件替代 input 事件 -->

vue实例方法<-标签

内置指令v-on简写@,监听DOM事件、触发Vue实例中的方法

内联事件处理器中访问事件参数
<!-- 使用特殊的 $event 变量 -->
<button @click="warn('Form cannot be submitted yet.', $event)">Submit
</button><!-- 使用内联箭头函数 -->
<button @click="(event) => warn('Form cannot be submitted yet.', event)">Submit
</button>function warn(message, event) {// 这里可以访问原生事件if (event) {event.preventDefault()}alert(message)
}

Vue 模板区域使用特定的语法来声明数据绑定、事件处理等。例如{{ }} 进行数据绑定,使用 @ 或 v-on 来绑定事件。

在Vue模板中要使用Vue 模板语法

Vue 的预定义变量、方法:$

  • $event原生 DOM 事件对象,传递事件对象给事件处理函数。
  • $el:当前 Vue 实例所关联的根 DOM 元素

    $data,$props$methods,$computed,$watch$refs

    $emit:用于触发当前实例上的自定义事件,子传父/同级

    $on:用于在当前实例上监听事件,父监听子/同级

  • Vue2、3组件通信、双向绑定、插槽slot、内置指令_组件双向绑定-CSDN博客

  • $nextTick:在 DOM 更新完成之后执行回调函数,返回一个Promise

事件修饰符

在处理事件时调用 event.preventDefault() 或 event.stopPropagation() 是很常见的

DOM事件流:捕获->冒泡(默认)

  • .stop:阻止事件向父组件传播(已经发生)
  • .prevent:防止事件向子组件传播(防止默认)
  • .self:从触发事件的元素自身发出时才触发
  • .capture:在捕获阶段触发,而不是默认的冒泡阶段
  • .once:只会触发一次
  • .passive:触摸事件的监听器,可以用来改善移动端设备的滚屏性能。
  • 按键/鼠标修饰符

TIP

请勿同时使用 .passive 和 .prevent,因为 .passive 已经向浏览器表明了你不想阻止事件的默认行为。如果你这么做了,则 .prevent 会被忽略,并且浏览器会抛出警告。

<!-- 单击事件将停止传递 -->
<a @click.stop="doThis"></a><!-- 提交事件将不再重新加载页面 -->
<form @submit.prevent="onSubmit"></form>
<!-- 修饰语可以使用链式书写 -->
<a @click.stop.prevent="doThat"></a>
<!-- 也可以只有修饰符 -->
<form @submit.prevent></form><!-- 仅当 event.target 是元素本身时才会触发事件处理器 -->
<!-- 例如:事件处理器不来自子元素 -->
<div @click.self="doThat">...</div><!-- 添加事件监听器时,使用 `capture` 捕获模式 -->
<!-- 例如:指向内部元素的事件,在被内部元素处理前,先被外部处理 -->
<div @click.capture="doThis">...</div><!-- 点击事件最多被触发一次 -->
<a @click.once="doThis"></a><!-- 滚动事件的默认行为 (scrolling) 将立即发生而非等待 `onScroll` 完成 -->
<!-- 以防其中包含 `event.preventDefault()` -->
<div @scroll.passive="onScroll">...</div>
 vue2:methods
<template><div><button v-on:click="sayHello">Say Hello</button><button @click="sayHello">Say Hello</button></div>
</template><script>
export default {methods: {sayHello() {alert('Hello!');}}
}
</script>
vue3.2之前:setup、方法名=()=>{}、return
<template><div><button @click="sayHello">Say Hello</button></div>
</template><script>
import { defineComponent } from 'vue';export default defineComponent({setup() {const sayHello = () => {alert('Hello!');};// 将 sayHello 方法返回给模板使用return {sayHello};}
});
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WAF基础介绍

WAF 一、WAF是什么&#xff1f;WAF能够做什么 二 waf的部署三、WAF的工作原理 一、WAF是什么&#xff1f; WAF的全称是&#xff08;Web Application Firewall&#xff09;即Web应用防火墙&#xff0c;简称WAF。 国际上公认的一种说法是&#xff1a;Web应用防火墙是通过执行一…

免开steam 脱离steam 进行游戏的小工具

链接&#xff1a;https://pan.baidu.com/s/1k2C8b4jEqKIGLtLZp8YCgA?pwd6666 提取码&#xff1a;6666 我们只需选择游戏根目录 然后输入AppID 点击底部按钮 进行就可以了 关于AppID在&#xff1a;

机器学习——L1 L2 范数 —>L1 L2正则化

1、L1范数和L2范数是机器学习和数据分析中经常使用的两种范数&#xff0c;它们之间存在多个方面的区别。 以下是关于L1范数和L2范数区别的详细解释&#xff1a; 一、定义差异 L1范数&#xff1a;也被称为曼哈顿范数&#xff0c;是向量元素的绝对值之和。对于一个n维向量x&am…

酒店管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;酒店管理员管理&#xff0c;房间类型管理&#xff0c;房间信息管理&#xff0c;订单信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;房间信息…

Linux介绍与常用命令详解

目录 一、Linux概述 1.Linux发行版 2.Linux目录结构 二、Linux特点 三、Linux用途 四、Linux常用的命令 1.cd指令&#xff08;跳转位置&#xff09; 2.显示目录文件 3.对文件进行操作 4.rm指令&#xff08;删除文件夹指令&#xff09; 5.mv指令 6.查看文件命令 7.进程命令…

【云岚到家】-day05-6-项目迁移-门户-CMS

【云岚到家】-day05-6-项目迁移-门户-CMS 4 项目迁移-门户4.1 迁移目标4.2 能力基础4.2.1 缓存方案设计与应用能力4.2.2 静态化技术应用能力 4.3 需求分析4.3.1 界面原型 4.4 系统设计4.4.1 表设计4.4.2 接口与方案4.4.2.1 首页信息查询接口4.4.3.1 数据缓存方案4.4.3.2 页面静…

Ubuntu20.04 编译安装FFmpeg,出错分析以及解决方案

最近工程上需要对FFmpeg底层源码进行修改&#xff0c;需要重新编译&#xff0c;遇见不少坑&#xff0c;出篇教程记录一下。 文章目录 1.FFmpeg源码下载地址2.编译环境配置3.编译FFmpeg4.配置FFmpeg运行环境 1.FFmpeg源码下载地址 官方下载地址:Index of /releases (ffmpeg.or…

Java | Leetcode Java题解之第232题用栈实现队列

题目&#xff1a; 题解&#xff1a; class MyQueue {Deque<Integer> inStack;Deque<Integer> outStack;public MyQueue() {inStack new ArrayDeque<Integer>();outStack new ArrayDeque<Integer>();}public void push(int x) {inStack.push(x);}pub…

springboot1——快速构建项目

需求 第一步&#xff1a;创建maven工程(非web项目) 第二步&#xff1a;导入起步依赖 点击&#xff1a; 下拉复制&#xff1a; 粘贴&#xff1a;&#xff01;&#xff01;这是springboot工程需要继承的父工程 下拉复制&#xff1a; 粘贴&#xff1a;&#xff01;&#xf…

Nodejs 第八十章(Kafka高级)

kafka前置知识在前几章章讲过了 不再复述 Kafka集群操作 1.创建多个kafka服务 拷贝一份kafka完整目录改名为kafka2 修改配置文件 kafka2/config/server.properties 这个文件 broker.id1 //唯一broker port9093 //切换端口 listenersPLAINTEXT://:9093 //切换监听源启动zooKe…

常见问题记录(持续更新)

备注&#xff1a; 在7月10日记录之前遇到的问题及解决方法: 一&#xff1a;常见的访问问题&#xff1a; 403 Forbidden&#xff1a;&#xff08;未有请求权限&#xff09; 表示服务器理解请求但是拒绝执行它。这通常是由于服务器上的文件或资源没有正确的读、写或执行权限&…

python接口自动化(二十四)--unittest断言——中(详解)

1.简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言&#xff0c;这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例&#xff0c;设计了 2 个用例&#xff0c;一个是查询北京的天气&#xff0c;一个是查询 南京为例&#…

[MySQL][数据类型]详细讲解

目录 1.说明1.数据类型分类2.数值类型1.int类型2.bit类型3.浮点数类型1.float2.decimal 3.字符串类型1.char2.varchar3.char和varchar比较 4.日期和时间类型5.enum和set1.基本语法2.查询数据 1.说明 MySQL表中建立属性列&#xff0c;列名称 类型 num tinyint unsigned;与C/C语…

优化Cocos Creator 包体体积

优化Cocos Creator 包体体积 引言一、优化图片文件体积&#xff1a;二、优化声音文件体积&#xff1a;三、优化引擎代码体积&#xff1a;四、 优化字体字库文件大小&#xff1a; 引言 优化Cocos Creator项目的包体体积是一个常见且重要的任务&#xff0c;尤其是在移动设备和网…

【Flowable | 第二篇】使用Flowable实现请假流程

文章目录 3.使用Flowable实现请假流程3.1部署测试环境3.2工作流/我的任务菜单3.3设计请假流程3.4绑定业务表3.5申请请假3.6节点审批人审批3.6.1审批动作3.6.2流程状态 3.使用Flowable实现请假流程 3.1部署测试环境 我们使用开源的若依框架&#xff0c;来实现Flowable请假流程…

17102 “一条路径图”的最大独立集问题

这个问题可以通过动态规划来解决。我们可以定义一个数组f&#xff0c;其中f[i]表示从最左边的节点沿着一条路径到节点vi为止&#xff0c;具有的独立集最大权值之和。然后我们可以通过比较f[i-1]&#xff0c;f[i-2]w[i]和w[i]的值&#xff0c;来更新f[i]。 以下是解题步骤&…

应用数学与机器学习基础 - 多任务学习篇

序言 在人工智能的浩瀚星空中&#xff0c;深度学习作为一颗璀璨的明星&#xff0c;正引领着技术革命的新浪潮。随着数据量的爆炸性增长和计算能力的飞跃&#xff0c;深度学习模型在诸多领域展现出了前所未有的性能与潜力。而多任务学习&#xff08;Multi-Task Learning, MTL&a…

科技云报道:产业为根大模型应用为擎,容联云推动企业营销服场景重塑

科技云报道原创。 “没有应用&#xff0c;光有一个基础模型&#xff0c;不管是开源还是闭源&#xff0c;一文不值。”在2024世界人工智能大会&#xff08;WAIC 2024&#xff09;现场&#xff0c;百度创始人、董事长兼首席执行官李彦宏直言。 国产大模型的种类越发丰富&#x…

纯净IP的重要性解析与测评分析

作为连接互联网世界的桥梁&#xff0c;IP地址的纯净度不仅关乎网络访问的速度与稳定性&#xff0c;更是影响着数据安全与隐私保护。今天&#xff0c;我们将带您深入探索纯净IP的重要性&#xff0c;并分享我们对芝麻HTTP与巨量IP这两家提供纯净SOCKS5代理服务的深度测评分析。 一…

AI算法15-弹性网络回归算法Elastic Net Regression | ENR

弹性网络回归算法简介 在机器学习领域中&#xff0c;弹性网络&#xff08;Elastic Net&#xff09;是一种结合了L1范数&#xff08;套索回归&#xff09;和L2范数&#xff08;岭回归&#xff09;的正则化方法。它综合了两者的优点&#xff0c;既可以实现特征选择&#xff0c;又…