vue3知识点学习

vue3知识点学习

  • 脚手架安装与运行
  • 知识点
    • 条件渲染
    • 列表循环,key状态管理
    • 事件处理
      • 内联事件处理
      • 方法事件处理
    • 事件修饰符
    • 数组变化侦听
    • 计算属性
    • class绑定
    • style绑定
    • 侦听器
    • 表单输入绑定 v-model指令
    • $refs 获取dom元素
    • 组件的使用
      • 三个步骤引用组件
    • $组件嵌套
      • 组件局部注册
      • 组件全局注册
      • 要实现如下图的布局
      • header
      • main
      • aside
      • article
      • item
      • app.vue
    • 父子组件数据传递( props父传子)
      • 实现方案
    • 父子组件数据传递($emit 子传父)
    • 组件生命周期函数

近期在学习vue3知识点,做一个系统记录

脚手架安装与运行

npm init vue@latestcnpm installnpm run dev

知识点

条件渲染

列表循环,key状态管理

事件处理

内联事件处理

方法事件处理

事件修饰符

<a @click.prevent="method01" href="https://www.baidu.com">百度一下,你就知道</a>

数组变化侦听

计算属性

计算属性与方法的区别:计算属性,在表达式没有变更场景下,只执行一次。而方法会执行多次

<p>方法实现:{{ computedOne }}</p>//计算属性
computed:{computedOne(){return this.objectOne.items.length>0 ? 'yes':'no';}}

class绑定

操作元素的class

<p>class多对象绑定方式::class="{'fontClassOne':isActive,'text-danger':isDanger}"</p>
<p :class="{'fontClassOne':isActive,'text-danger':isDanger}">样式绑定()</p>
<p :class="classObjectOne">样式绑定(多对象绑定)</p>
<p :class="[isActiveArray,isDangerArray]">样式绑定(数组绑定)</p>
<p :class="[isActive?'text-danger':'']">样式绑定(三元运算符)</p>data(){return{isActive:true,isDanger:true,classObjectOne:{'fontClassOne':true,'text-danger':true}}
},
<style>
.fontClassOne{font-size: 23px;}.text-danger{color: red;}
</style>

style绑定

style标签中的scoped作用,让当前样式只在当前组件中生效

<h3>对象绑定</h3>
<p :style="{color:styleColor,fontSize:styleSize+'px'}">style绑定01</p>
<p :style="styleObjectOne">style绑定对象</p>data(){return{styleColor:'red',styleSize:20,styleObjectOne:{color:'red',fontSize:20+'px',}}
}

侦听器

什么是具有响应式的数据?就是在data中所声明的数据,通过双花括号模版语法绑定的数据,可以监听到,侦听器的方法命名要求,和响应式数据一致

<p>{{ message }}</p>
<button @click="changeMessage">修改响应式数据</button>
watch:{message(newValue,oldValue){console.log("侦听器在执行,newValue->"+newValue+"oldValue->"+oldValue)}
}

表单输入绑定 v-model指令

<form>v-model指令<input type="text" v-model="inputMessage"><p>{{ inputMessage }}</p><input type="checkbox" id="checkbox" v-model="checked"><label for="checkbox">{{ checked }}</label>v-model指令带修饰符<input type="text" v-model.lazy="inputMessageXiu"><p>{{ inputMessageXiu }}</p>
</form>

$refs 获取dom元素

<div class="container" ref="container">{{ content }}</div>
<button @click="getDomElement">获取dom元素</button>
methods:{getDomElement(){//innerHTML:原生js属性console.log( this.$refs.container);this.$refs.container.innerHTML="我修改了dom元素内容"}
}

组件的使用

三个步骤引用组件

  1. 在script内,通过ES6的import引入组件
  2. 在components内注入组件
  3. 在templath中通过标签形式显示组件

$组件嵌套

组件局部注册

直接在当前页面引入

组件全局注册

在main.js中引入

import { createApp } from 'vue'
import App from './App.vue'
import HeaderQuan from './pages/HeaderQuan.vue'
const app = createApp(App);
// 在中间写组件的注册,否则无用
app.component('HeaderQuan',HeaderQuan)
app.mount('#app')

要实现如下图的布局

组件嵌套布局

header

<template><h3>Header(局部注册,只有在引入页面可以使用)</h3>
</template>
<style scoped>h3{width: 100%;height: 100px;border: 5px solid #999;text-align: center;line-height: 100px;box-sizing: border-box;}
</style>

main

<template><div class="main"><h3>Main</h3><Article /><Article /></div>
</template>
<script>
import Article from './Article.vue';
export default{components:{Article}
}
</script>
<style scoped>
.main{float: left;width: 70%;height: 400px;border: 5px solid #999;box-sizing: border-box;
}
</style>

aside

<template><div class="aside"><h3>Aside</h3><Item/><Item/><Item/></div>
</template>
<script>
import Item from './Item.vue'
export default{components:{Item}
}
</script>
<style scoped>
.aside{float: right;width: 30%;height: 400px;border: 5px solid #999;box-sizing: border-box;
}
</style>

article

<template><h3>Article</h3>
</template>
<style scoped>
h3{width: 80%;margin: 0 auto;text-align: center;line-height: 100px;box-sizing: border-box;background: #999;margin-top: 50px;
}
</style>

item

<template><h3>Item</h3>
</template> 
<style scoped>
h3{width: 80%;margin: 0 auto;text-align: center;line-height: 100px;box-sizing: border-box;background: #999;margin-top: 10px;
}
</style>

app.vue

<template><Header /><Main /><Aside />
</template>
<script>
import Header from './pages/Header.vue';
import Main from './pages/Main.vue';
import Aside from './pages/Aside.vue';
export default{components:{Header,Main,Aside}
}
</script>

父子组件数据传递( props父传子)

props传递,只能是父给子传

实现方案

父引入子
父放值

动态数据传递<child :titleDongtai="message" :parentObject="wifeObject" :parentArray="wifes" :parentNum="age" name="fanbin"/>

子取值

 props:["title","name","titleDongtai","parentArray","parentObject"]
<template><h1>child</h1><p>父页面传来的静态数据(字符串)---{{ name }}</p><p>父页面传来的动态数据(字符串)---{{ titleDongtai }}</p><p>父页面传来的动态数据(数字)---{{ parentNum }}</p><p>父页面传来的动态数据(数组)---{{ parentArray }}</p><ol><li v-for="wife,index in parentArray" :key="index">{{ wife }}</li></ol><p>父页面传来的动态数据(对象)---{{ parentObject }}</p>
</template>
  1. 子在接收数据,可增加props校验
  2. 子不允许修改父传来的值
  3. 关于默认值:数字和字符串是可以直接default,但是如果是数组和对象,必须通过工厂函数返回默认值,例如:default(){return
    [“空”]}

父子组件数据传递($emit 子传父)

子页面传值

methods:{
invokeParentMethod(){//自定义事件this.$emit("parentFunction","我是子页面的参数");}
},

父页面取值

<childEvent @parentReceveValue="myFunction"/>
父页面获取到了子页面实时输入的数据<p>{{ childParam }}</p>methods:{
myFunction(data){this.childParam = data;}
}

组件生命周期函数

  1. 创建期:beforeCreate created
  2. 挂载期:beforeMount mounted
  3. 更新期:beforeUpdate updated
  4. 销毁期:beforeUnmount unmounted
export default{data(){return{message:"更新之前",friends:[]}},methods:{changeMessage(){this.message="更新之后。"}},computed:{},watch:{message(a,b){console.log("watch开始工作了,修改前-->"+a+" 修改后-->"+b)}},components:{},props:{},beforeCreate(){console.log('组件创建之前');},created(){console.log('组件创建之后');},beforeMount(){console.log('组件渲染之前');},mounted(){console.log('组件渲染之后');console.log('获取dom元素  '+this.$refs.fanbin)this.friends = [{"name":"张三1","age":111},{"name":"张三2","age":222},{"name":"张三3","age":333}]},beforeUpdate(){console.log('组件更新之前');},updated(){console.log('组件更新之后');},beforeUnmount(){console.log('组件销毁之前');},unmounted(){console.log('组件销毁之后');},
}

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

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

相关文章

【Mysql】重新认识mysql(一)

参考Mysql是怎么运行的&#xff0c;并结合实际的工作经验对mysql的知识进行总结。 Mysql架构 从大体上来说&#xff0c;Mysql是C/S架构。以我们平时使用的QQ为例&#xff0c;它其实是由两部分组成的&#xff0c;一部分是客户端程序,&#xff0c;一部分是服务器程序。客户端可…

【广州华锐互动】VR建筑施工事故体验:提高工人安全意识和责任感

VR建筑施工事故体验的意义在于通过模拟真实场景和情况&#xff0c;帮助人们更好地理解建筑施工中的安全问题&#xff0c;并提供一种安全、有效的方式来学习和掌握安全技能。 建筑施工是一项高风险的工作&#xff0c;涉及各种复杂的工作环境和操作过程。在现实中&#xff0c;建筑…

保护互联网数据安全:关键方法与最佳实践

在当今数字化时代&#xff0c;互联网数据安全已经成为个人、企业和组织的首要任务之一。随着信息技术的迅猛发展&#xff0c;网络威胁也不断演进&#xff0c;因此保护互联网数据安全变得尤为关键。本文将介绍一些关键方法和最佳实践&#xff0c;帮助您确保互联网数据的安全性。…

RCD吸收电路的工作原理及参数计算方法详解

在电子电力技术和自动化控制领域内&#xff0c;RCD吸收电路非常重要&#xff0c;它的作用是吸收瞬间过电压和过电路免受电压波动的影响&#xff0c;因此被广泛应用在各种设备及系统中&#xff0c;今天凡亿将带领小伙伴们来了解下RCD吸收电路的工作原理及计算方法。 1、RCD吸收电…

电脑技巧:推荐一款桌面整理神器TidyTabs

目录 1、软件简介 2、软件功能介绍 3、总结 1、软件简介 TidyTabs是一款Windows应用程序&#xff0c;它可以将多个打开的窗口整理成一个选项卡式的界面&#xff0c;使得用户可以更加方便地切换和管理不同的窗口。 TidyTabs可以将多个窗口整合到一个主窗口中&#xff0c;类似…

虚拟机软件Parallels Desktop 19 mac功能介绍

Parallels Desktop 19 mac是一款虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 PD19虚拟机软件具有快速启动和关闭虚拟机的能力&#xff0c;让…

资深8年测试整理,接口测试必备-加密与签名,让你不再走弯路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、接口加密解密 …

Avalonia常用小控件Menu

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 样式预览&#xff1a; axaml代码 &#xff1a; <UserControl xmlns"https://github.com/avalo…

DAZ To UMA⭐五.模型在Blender中的配置教程

文章目录 🟥 创建符合UMA的材质球属性1️⃣ 合并材质球🎁 选择材质球🎁 合并材质球🎁 删除多余材质球2️⃣ 将身体按材质球拆分🎁 进入身体编辑模式🎁 全选身体🎁 按材质分割身体🎁 重命名不同部位3️⃣ 将其余部位进行拆分🟧 更正选择缩放🟩 更新骨骼结构…

python opencv 深度学习 指纹识别算法实现 计算机竞赛

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python opencv 深度学习 指纹识别算法实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;4分创新点&#xff1a;4分 该项目较为新颖…

数据治理的数字画像

随着全网步入大数据时代&#xff0c;企业的目光日益聚焦在利用大数据服务精细化营销、精细化运营上&#xff0c;各类客户画像、员工画像理论如雨后春笋般兴起&#xff0c;而数据应用的底层——数据治理&#xff0c;却鲜有整体的理论体系。如何避免治理工作自身“无的放矢”&…

GLB/GLTF在线纹理编辑

1、GLB/GLTF纹理介绍 GLB文件是将glTF文件及其所引用的资源文件&#xff08;如纹理、着色器等&#xff09;打包到一个二进制文件中。在GLB文件中&#xff0c;纹理数据可以通过嵌入式存储的方式进行存储。 GLB文件中的纹理数据包含了模型的材质信息和纹理图像数据。具体来说&a…

本地vscode安装GPU版本PyTorch

操作系统 windows, IDE环境vscode&#xff0c;本地GPU 可以新建一个jupyter文件&#xff0c;运行一些测试代码 确保装好显卡驱动 在底下调出终端窗口&#xff0c;默认是power shell&#xff0c;我喜欢用cmd窗口 激活自己的虚拟环境&#xff0c;输入命令 nvidia-smi 确保自己…

如何选择UMLChina服务

服务口号&#xff1a;聚焦最后一公里 斐力庇第斯从马拉松跑回雅典报信&#xff0c;虽然已是满身血迹、精疲力尽&#xff0c;但他知道&#xff1a;没有出现在雅典人民面前&#xff0c;前面的路程都是白费。 学到的知识如果不能最终【用】于您自己的项目之中&#xff0c;也同样是…

EDUSRC-记一个SHELL捡漏

目录 ​编辑 Jenkins - println绕过到shell命令执行 语法 Jenkins未授权访问(捡漏失败) Jenkins捡漏 弱口令 脚本执行(println失败) CHATGPT调教绕过 hack渗透视频教程&#xff0c;扫码免费领 Jenkins - println绕过到shell命令执行 语法 org"China Education and…

『Linux』GDB调试

前言 GDB 是由 GNU 软件系统社区提供的调试工具&#xff0c;同 GCC 配套组成了一套完整的开发环境&#xff0c;GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。 一般来说&#xff0c;GDB 主要完成下面四个方面的功能&#xff1a; 启动程序&#xff1a;可以按照自定义的要求…

分布式数据库HBase(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…

C语言中常用的字符串处理函数(strlen、strcpy、strcat、strcmp)

文章目录 写在前面1. strlen1.1 函数介绍1.2 模拟实现 2. strcpy2.1 函数介绍2.2 模拟实现 3. strcat3.1 函数介绍3.2 模拟实现 4. strcmp4.1 函数介绍4.2 模拟实现 写在前面 本篇文章介绍了C语言中常用的字符串处理函数&#xff0c;包括strlen、strcpy、strcat和strcmp。文章…

10-网络篇-DHCP获取的参数详解

一个设备接入路由器局域网时&#xff0c;是通过DHCP获取网络信息&#xff0c;从而完成网络配置的获取。如下图所示为windows系统通过DHCP所要获取的网络配置&#xff1a;IP、子网掩码、网关、DNS服务器。任何设备要上网前&#xff0c;都需要知道这几个参数&#xff0c;下面对这…

拼多多商品品牌数据采集接口,拼多多商品详情数据接口,拼多多API接口

拼多多商品品牌数据采集的方法如下&#xff1a; 手动数据采集。直接在拼多多平台上搜索并手动复制商品数据&#xff0c;适合采集小批量的商品数据。自动数据采集。通过爬虫来自动获取&#xff0c;具体步骤如下&#xff1a; 选择爬虫框架并安装。Python爬虫框架有很多&#xf…