当前位置:首页 > 程序开发 > Web > VUE3快速入门(2)——自定义组件

VUE3快速入门(2)——自定义组件

bnbplayer3个月前 (02-08)Web322

扫描二维码推送至手机访问。

版权声明:本文由行者无疆发布,如需转载请注明出处。

本文链接:https://xinz.run/post/6.html

标签: VUE
分享给朋友:

“VUE3快速入门(2)——自定义组件” 的相关文章

VUE3快速入门(3)——方法与事件

VUE3快速入门(3)——方法与事件

本文讲述了如何在自定义组件中定义并调用方法,以及绑定DOM事件响应的方法。 1. 自定义方法1.1 定义一个方法在<script>标签内的setup方法内增加一个add方法,该方法传入两个参数,用于求和: function add(a: number, b: number): number{ return a + b; } 同时,将add方法暴露(返回): return {author, mail, tel, add};//author, mail, tel是上一节定义的变量 1.2 调用方法在<template>标签内,适当位置增加一个标签,用于调用方法: <h2>调用add方法: {{add(1,1)}}</h2> 1.3 查看结果编译、构建成功后,浏览器新出现“调用add方法: 2”的字样,说明求和方法被成功调用。 2. 绑定事件前端开发少不了处理DOM事件,如单击、获得焦点等。本节将讲述如何绑定常见的web标签事件。 2.1 绑定一个事件在<template>标签内,适当位置增加一个按钮,绑定click方法: <button @click="show(tel)">点我</button> 单击会调用test函数,并传入tel的值,该值在上一节已经定义: let author = "Jesse"; let mail = "3898xxxx@qq.com"; let tel = "136****615"; 2.2 完善事件处理方法在<script>标签内setup方法内,再增加show方法,该方法具有一个传输参数: function show(content: any): any { alert(content); } 同时记得暴露该方法: return {author, mail, tel, add, show};//author, mail, tel是上一节定义的变量 2.3 执行编译、构建成功后,浏览器会出现一个按钮,点击按钮,将弹出对话框,其内容是tel变量的内容。 3. 总结 方法与变量一样需要写在methods属性内。@click=”<方法名>”其实是v-on:click=”<方法名>”的简写。除了click外,还有submit、scroll的其他的DOM事件均可采用此方法进行事件处理。 4. 拓展学习与思考 除了v-on指令外,学习v-if、v-show、v-for的用法。尝试处理submit、onfocus等其他常见DOM事件。...

VUE3快速入门(4)——Setup语法糖与数据绑定

VUE3快速入门(4)——Setup语法糖与数据绑定

本文讲述了如何使用Setup语法糖简化代码,以及如何获取表单数据。在本系列后续的文章中,均使用setup语法糖写法。 1. Setup语法糖使用Setup导出数据或者方法必须使用return,当代码过多时就变得复杂。使用Setup语法糖无需显式声明要导出的内容,也不必再写setup方法名。 1.1 声明组件导出首先将<script>代码中的setup方法部分全部移除,仅留下组件导出声明: <script lang="ts"> export default { name: "MyComp", } 1.2 创建setup语法糖其次,新增一个<script>片段,如下: <script lang="ts" setup> </script> 注意: lang属性对应的语言必须与上一个<script>的代码语言一致,不得JS、TS混用;setup语法糖所在的<script>必须增加一个setup属性 1.3 在setup语法糖标签内写代码最后将原本setup方法里面的内容除了return外全部放入后一个<script>标签内,完整代码如下: <script lang="ts" setup> let author = "Jesse"; let mail = "3898xxxx@qq.com"; let tel = "136****615"; function add(a: number, b: number): number{ return a + b; } function show(content: any): any { alert(content); } //无需return {author, mail, ...} </script> 这样,凡是在setup语法糖内定义的数据和方法全部自动导出,不用再return。 2. 数据绑定数据绑定是指获取表单中填写的值。 2.1 创建一个表单在合适位置增加一个表单标签: <input name=””/> 2.2 创建变量并绑定表单的值创建一个变量,用于接收表单的值: let input_content = "" 在表单标签内使用v-model指令将表单值与该变量绑定: <input name="" v-model="input_content"/> 2.3 测试修改button的click事件,单击时弹出表单的值: <button @click="show(input_content)">单击</button> 其中show方法代码: function show(content: any): any { alert(content); } 3. 总结 使用setup语法糖就无需再显式声明导出的内容,但要求两个<script>片段语言类型一致;v-model指令用于将表单值与变量绑定;v-model指令仅能用于表单相关的标签。...

VUE3快速入门(5)——响应式数据

VUE3快速入门(5)——响应式数据

本节讲述了如何用ref和reactive实现基本数据类型和对象数据类型的响应式更新,同时讲述了在何种情况下会失去响应式功能以及对应的解决办法。 1. 什么是响应式响应式是指当变量的值变化后,<template>的内容同步自动更新。Vue2的选项式API中的data默认为响应式,但Vue3的组合式API为非响应式,即无法自动更新。因此需要用ref和reactive进行处理。 2.基本数据类型的响应式处理基本数据类型是指字符串和数字,这种类型只能用ref处理。 2.1 表单输入的响应式更新本节实现HTML标签实时显示表单内容的功能。 在上一节的基础上增加一个HTML元素,用来实时显示表单的输入值: <h2>input框的内容: {{ input_content }}</h2> <input v-model="input_content"/> 修改<script>代码: import { ref } from 'vue' let input_content = ref(''); 对比上一节代码(2.2小节),input_content此时通过ref进行了定义。执行代码,当在input框内输入数据时,<h2>标签的内容将同步更新,此时的input_content为响应式数据。 2.2 代码操作的响应式更新本节实现按钮单击实时更改HTML标签内容的功能。 新增按钮并绑定事件: <button @click="add()">+1</button> 事件处理方法: function add() { input_content.value += 1;//注意:必须通过“ref的实例名.value.字段”的形式更新 } 单击按钮,页面上的数字加1,即通过代码实现了页面的更新。 3. 对象数据类型的响应式处理对象数据类的响应式处理既可以用ref又可以用reactive。 本节将实现通过输入框更改对象的一个字段,并实时显示的功能。<template>部分代码如下: <h2>电话号码: {{ worker.tel }}</h2><!--注意此处对象实例.字段的写法,不受ref或reactive的影响--> <input v-model="tel"/> <button @click="changeTel(tel)">修改电话</button> 3.1 通过ref处理定义表单绑定的变量、事件方法,并通过ref定义一个对象: import { ref } from 'vue' let worker = ref({ name: "Jesse", age: 12, mail: "3898*******@qq.com", tel: "136****615" }); let tel = ""; function changeTel(content: any): any { worker.value.tel = content;//同样通过“ref的实例名.value.字段”的形式更新 } 输入新的号码并点击按钮,将更新worker对象的tel字段,且在页面同步更新。 3.2 通过reactive处理修改代码如下: import { reactive } from 'vue' let worker = reactive({ name: "Jesse", age: 12, mail: "3898*******@qq.com", tel: "136****615" }); let tel = ""; function changeTel(content: any): any { worker.tel = content;//注意此处与ref的区别,不再需要.value } 4. 丢失响应功能的情况当整体替换对象或解构对象时,可能会丢失响应式功能。 4.1 对象类型的字段批量更新很多时候希望将服务器返回的数据直接赋值给对象,从而更新多个的字段。在JS/TS里,服务器返回的数据被视为一个新的对象,如果采用直接赋值的方式会失去响应式功能。 //之前定义的对象 let worker = reactive({ name: "Jesse", age: 12, mail: "3898*******@qq.com", tel: "136****615" }); function getPost(content: any): any { let ajax_obj = JSON.parse(content);//解码JSON,转换成对象 /* 假设ajax_obj对象如下: { name: "Alice", age: 14, mail: "1234*******@qq.com", tel: "132****777" } */ worker = reactive(ajax_obj)//尝试通过这样的方式更新多个字段的内容将会失去响应式功能。 } 4.1.1 逐字段赋值function getPost(content: any): any { let ajax_obj = JSON.parse(content);//解码JSON,转换成对象 worker.name = ajax_obj.name; wroker.age = ajax_obj.age; //... } 这种方法适合字段较少的情况。 4.1.2 使用Object.assginObject.assgin的主要功能是对象合并,第一个参数是原始对象,后面的参数是要合并的多个对象。但使用Object.assgin在某些情况可能不适用。 function getPost(content: any): any { let ajax_obj = JSON.parse(content);//解码JSON,转换成对象 worker = Object.assgin(worker, ajax_obj); } 4.1.3 使用ref将原始对象的定义改为ref即可。 //之前定义的对象 let worker = ref({ name: "Jesse", //... }); function getPost(content: any): any { let ajax_obj = JSON.parse(content);//解码JSON,转换...

VUE3快速入门(6)——计算属性

VUE3快速入门(6)——计算属性

本节讲述了Vue3的计算属性的用法。 1. 什么是计算属性计算属性用于对一些需要展示到模板上的数据进行处理,虽然用函数也能实现,但计算属性会自动缓存,只有值发生变化时才重新计算,加快运行效率。 2. 基本使用方法本节实现一个功能,将输入的电话号码隐去中间四位。 2.1 引用computedimport { computed } from 'vue'; 2.2 使用computed方法定义一个计算属性let encoded_tel = computed(() => { let part_1 = worker.value.tel.substring(0, 3); let part_2 = worker.value.tel.slice(-4); return part_1 + "****" + part_2; }); 其中worker是由ref定义的响应式数据,通过输入框修改电话号码并实时显示的方法参考上一节:VUE3快速入门(5)——响应式数据。 2.3 在模板中使用将上一节的模板变量改为: <h2>电话号码: {{ encoded_tel }}</h2> 这样,当输入电话号码并点击“修改”后,号码将隐去中间四位。 3. 计算属性的读写性如果要通过代码修改计算属性的值,则: function changeComputed() { encoded_tel.value = "..."; } 3.1 只读第二节定义计算属性的方式属于只读属性,采用上述方法修改计算属性的值会报错。 3.2 可读可写要修改计算属性的值,必须定义getter和setter: let encoded_tel = computed(() => { get(){ let part_1 = worker.value.tel.substring(0, 3); let part_2 = worker.value.tel.slice(-4); return part_1 + "****" + part_2; }, set(val){ //针对val的逻辑处理代码 } }); 4. 总结 计算属性与函数类似,但计算属性有缓存,如多次调用其值不变,则仅计算一次;计算属性如果要通过代码修改值,则必须定义getter和setter;对计算属性的value字段赋值,仅仅触发setter的调用,实际上并没有修改任何值,还需要在setter里面编写逻辑处理代码!...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。