vue3学习笔记(二)

Vue2+Vue3基础入门到实战项目(二)——课程学习笔记 Vue2+Vue3基础入门到实战项目(二),主打记录式、陪伴式、身临式学习;Vue的生命周期、工程化开发-vue-cli、组件化、注册组件、页面拆分…… 阅读详情

vue3.2.0更新

在2021年7月7号,vue更新了3.2.0版本。相比于最初的3.0版本,优化了一些功能,使开发更加简单。

和3.0对比

起初 Vue3.0 暴露变量必须 return 出来,template中才能使用;
Vue3.2 中 只需要在 script 标签上加上 setup 属性,组件在编译的过程中代码运行的上下文是在 setup() 函数中,无需return,template可直接使用。

示例

<template>
  <div>{{name}}</div>
  <button @click='changeName'>按钮</button>  
</template>

<script setup>
  import { reactive, ref } from 'vue'

  // ref声明响应式数据,用于声明基本数据类型
  const name = ref('Jerry')
  // 修改
  name.value = 'Tom'

  // reactive声明响应式数据,用于声明引用数据类型
  const state = reactive({
    name: 'Jerry',
    sex: '男'
  })
  
  const changeName = () => {
    state.name = 'Tom'
  } 
</script>

props父子传参

父组件

<template>
  <child name='Jerry'/>  
</template>

<script setup>
  // 引入子组件
  import child from './child.vue'
</script>

子组件

<template>
  <span>{{props.name}}</span>
  // 可省略【props.】
  <span>{{name}}</span>
</template>

<script setup>
  // import { defineProps } from 'vue'
  // defineProps在<script setup>中自动可用,无需导入
  // 需在.eslintrc.js文件中【globals】下配置【defineProps: true】

  // 声明props
  const props = defineProps({
    name: {
      type: String,
      default: ''
    }
  })  
</script>

emit

子组件

<template>
  <span>{{props.name}}</span>
  // 可省略【props.】
  <span>{{name}}</span>
  <button @click='changeName'>更名</button>
</template>

<script setup>
  // import { defineEmits, defineProps } from 'vue'
  // defineEmits和defineProps在<script setup>中自动可用,无需导入
  // 需在.eslintrc.js文件中【globals】下配置【defineEmits: true】、【defineProps: true】
	
  // 声明props
  const props = defineProps({
    name: {
      type: String,
      default: ''
    }
  }) 
  // 声明事件
  const emit = defineEmits(['updateName'])
  
  const changeName = () => {
    // 执行
    emit('updateName', 'Tom')
  }
</script>

父组件

<template>
  <child :name='state.name' @updateName='updateName'/>  
</template>

<script setup>
  import { reactive } from 'vue'
  // 引入子组件
  import child from './child.vue'

  const state = reactive({
    name: 'Jerry'
  })
  
  // 接收子组件触发的方法
  const updateName = (name) => {
    state.name = name
  }
</script>

nextTick

<script setup>
  import { nextTick } from 'vue'
	
  nextTick(() => {
    // ...
  })
</script>

ref

  • 在标准组件写法里,子组件的数据都是默认隐式暴露给父组件的,但在 script-setup 模式下,所有数据只是默认 return 给 template 使用,不会暴露到组件外,所以父组件是无法直接通过挂载 ref 变量获取子组件的数据。
  • 如果要调用子组件的数据,需要先在子组件显示的暴露出来,才能够正确的拿到,这个操作,就是由 defineExpose 来完成。

子组件

<script setup>
  import { defineExpose, reactive, toRefs } from 'vue'
	
  // 声明state
  const state = reactive({
    name: 'Jerry'
  }) 
	
  // 声明方法
  const changeName = () => {
    // 执行
    state.name = 'Tom'
  }
  
  // 将方法、变量暴露给父组件使用,父组见才可通过ref API拿到子组件暴露的数据
  defineExpose({
    // 解构state
    ...toRefs(state),
    changeName
  })
</script>

父组件

<template>
  <child ref='childRef'/>  
</template>

<script setup>
  import { ref, nextTick } from 'vue'
  // 引入子组件
  import child from './child.vue'

  // 子组件ref
  const childRef = ref('childRef')
  
  // nextTick
  nextTick(() => {
    // 获取子组件name
    console.log(childRef.value.name)
    // 执行子组件方法
    childRef.value.changeName()
  })
</script>

CSS变量注入

<template>
  <span>Jerry</span>  
</template>

<script setup>
  import { reactive } from 'vue'

  const state = reactive({
    color: 'red'
  })
</script>
  
<style scoped>
  span {
    // 使用v-bind绑定state中的变量
    color: v-bind('state.red');
  }  
</style>

参考:
https://juejin.cn/post/7006108454028836895
https://blog.youkuaiyun.com/qq_41800366/article/details/120091329

Vue 2.0->3.0学习笔记(Vue 3 (二)- 常用 Composition API) 阅读详情

相关推荐

vcs中systemverilog和c/c++联合仿真

前言 systemverilog中,可以通过DPI、PLI来与外部其它语言的程序进行交互。PLI又分为三类,TF、ACC和VPI,可以认为是PLI技术的三代演进: 其中VPI(PLI3.0)是TF/ACC的一个超集,目前使用的PLI基本上都是VPI。 与PLI技术相独立的另一个技术就是DPI,DPI技术简化了systemverilog与foreign language的交互步骤,对于开发者相对友好,所以使用相对广泛一些。 本文不对DPI中程序调用/数据交互展开讨论(这部分可以参考绿皮书..

kevindas的博客 1万+

【vue】vue3学习笔记(二)

接上篇 左侧导航 上一篇变量声明的d.ts文件前面的文件名需要和variables.scss的文件名一样,也就是叫variables.scss.d.ts,才可以不报错。

不忘初心,坚定道路! 1018

示波器面板上的隐藏功能:如何利用BW Limit和EXT TRIG提升测量精度

本文深入探讨示波器面板上的隐藏功能BW Limit和EXT TRIG,揭示它们如何提升测量精度。通过带宽限制(BW Limit)有效滤除高频噪声,结合外部触发(EXT TRIG)确保稳定信号捕获,为电子测量提供专业解决方案。特别适用于开关电源、传感器信号等复杂场景的高精度测量需求。

weixin_30300225的博客 518

Vue3基础学习笔记(二)Vue基础语法3-常用模板语法

简写为如:简写为constcreateAppdatareturnmessage'hello'template<div内容</div>;</实现效果:给div添加了一个name属性,属性值为data中message的值。

smellsummer的博客 231

linux入侵排查-综合日志分析

2.分析攻击者首次成功登录web管理后台的时间 还可以知道攻击者可能是通过10.2.4.11这个跳板服务器跳过来的,然后我们继续排查,可以发现日志中POST请求大多都是1047字节,然后往后大多是300字节,POST请求的响应状态码有200和302这两个,其中的302是爆破成功后持续爆破产生的日志,再1047字节和300字节中间夹着一个978字节,就是200响应和302响应的中间。7.分析攻击者留下的持久化后门的时间和后门执行情况 排查计划任务,发现有一个计划任务还是被加密的,应该是反弹shell的。

chinese_cabbage0的博客 643

QGIS中高效处理CAD数据的两种实用技巧

本文详细解析了在QGIS中高效处理CAD数据的两种核心方法。针对DWG/DXF文件在QGIS中直接打开失败的问题,介绍了使用QGIS内置数据导入管理器进行标准化转换的流程,并重点推荐了功能更强大的Another DXF Importer插件,以更好地保留文字、块属性等复杂信息。文章对比了两种方法的优劣与适用场景,并提供了坐标系设置、中文乱码等常见问题的避坑指南,帮助用户根据数据需求选择最佳导入策略。

weixin_28363123的博客 117

Vue3.0新特性及使用方法

1.1创建Vue3.0项目 通过脚手架 vite 安装: npm init vite-app hello-vue3 # OR yarn create vite-app hello-vue3 Vite目前仅支持 Vue 3.x以上,这意味着你不能使用不兼容Vue 3的组件库 目前基于Vue的第三方组件库兼容Vue 3的情况: Ant Design Vue:支持 Vue 3.0 的 2.0.0 测试版已发布 ElementUI:尚未支持 MintUI:尚未支持 iView(ViewUI):尚未支持 Vue2-l

weixin_45035430的博客 2752

手把手教你学simulink(8.39)--基于Simulink的步进电机(Stepper Motor)仿真实例

通过这个仿真实例,你可以学习如何使用Simulink构建和仿真步进电机(Stepper Motor)系统。你可以根据实际需求调整模型和参数,进行更复杂的仿真和分析。希望这个例子对你有所帮助,祝你学习愉快!

MHD0815的博客 1052

Vue3.0学习笔记二

Vue3.0 学习与使用

qq_39715380的博客 231

【立创EDA-PCB设计基础】1.嘉立创EDA专业版软件安装+PCB基本概念+原理图绘制

本文详解PCB基本概念以及实现MCU最小系统原理图的绘制(原理图包括MCU芯片GD32F103C8T6、外部晶振、输出端口、USB输入口、5v转3v3稳压输出、复位按键、唤醒按键、LED)及嘉立创EDA专业版软件安装。为本专栏【立创EDA-PCB设计基础】后面章节实现PCB绘制做准备。

嵌入式阿齐Archie 3万+

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍动态分析沙箱Cape的安装过程,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。然而,当样本数量增加时,单个样本分析会降低效率。这篇文章将讲解如何实现Cape沙箱的批量分析,通过调用Python脚本文件来实施批量处理,并将分析结果存储在指定位置,最后补充submit.py的参数及Python调用方式。基础性文章,希望对您有帮助!

杨秀璋的专栏 4121

vue3学习笔记(2)

路由导航守卫Pinia简介Pinia和vuex的区别。

ly1477868382的博客 198

Android 9.0 延时开机动画解决首次开机黑屏和去掉android正在启动的提示框

在9.0的系统产品rom定制化开发中,在一些产品中会出现在首次开机的时候,由于在开机动画播放完以后会出现几秒短暂的黑屏情况,然后进入默认Launcher,这在产品体验上 也是感觉到有点差,所以会要求在去掉这个首次开机黑屏的效果,和在启动过程中的 android is starting这个提示框的这些效果优化,接下来就分析下相关功能, 然后实现这个功能的开发

安卓兼职framework和app工程师的博客 3245

Vue3学习笔记(二)

Vue3学习笔记(二)

XiaoRanYe的博客 770

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VUE|学习笔记②(Vue3核心语法)

OptionsAPI 与 CompositionAPI 先前vue2使用的是options(配置/选项)风格的,而现在vue3是composition(组合)风格的。我的理解是vue2把数据、方法等按照它们的类型分开了,而vue3则是按照对象分开,例如都是把某个对象A相关的放在一起。我理解的可能有偏差也讲不太清楚,想要详细了解的可以自己观看禹神的讲解课程,这个我在笔记①中已经提到了是哪个系列的课程,或者也可以自己搜索资料。

2403_89168113的博客 2317

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vue3 + Typescript学习笔记 二

一、用 reactive()函数优化程序 上节课的代码可以说没什么章法可言,所有的变量和方法都混淆在一起,我最不能忍受的是在setup中要改变和读取一个值的时候,还要加上value。这种代码一定是可以优化的,需要引入一个新的 APIreactive。它也是一个函数(方法),只不过里边接受的参数是一个 Object(对象)。 然后无论是变量和方法,都可以作为 Object 中的一个属性,而且在改变selectGirl值的时候也不用再加讨厌的value属性了。再return返回的时候也不用一个个返回了,只需

weixin_44378370的博客 386

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Vue3.0学习笔记 二

文章目录前言 前言

weixin_45131334的博客 386

vue3.0 学习笔记(二)

vue3.0新增特性 总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更多的原生支持 易于维护 易于开发使用 基于 Proxy 的观察者机制 目前,Vue 的反应系统是使用 ObectDefineProperty 的 getter 和 setter。 但是,Vue 3 将使用 ES2015 Proxy 作为其观察者机制。 这消除了以前存在的警告,使速度加倍,并节省了一半的内存开销。 为了继续支持 IE11,Vue 3 将发布一个支持旧观察者机制和新 Proxy 版本的构建。 使 Vue 更小

qq_45939795的博客 398

小白vue2-vue3学习笔记(二)

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考基本语法(全局、局部注册)指令的值v-loading的指令封装… 这都是Vue给咱们内置的一些指令,可以直接使用自定义指令:同时Vue也支持让开发者,自己注册一些指令。这些指令被称为自定义指令每个指令都有自己各自独立的功能概念:自己定义的指令,可以封装一些DOM操作,扩展额外的功能全局注册//在main.js中。

weixin_51877011的博客 807

Vue3.0学习笔记(二)

Vue3.0的学习笔记二

m0_50899128的博客 1019

[Vue3学习笔记] (二) setup ref reactive与生命周期

[Vue3学习笔记] (二) setup ref reactive与生命周期 一、template不再需要根元素 显然在vue3中template不再一定需要一个父元素才能编译通过了。 二、setup函数初识 2.1、关于setup ​ setup函数其实是一个生命周期钩子,它对应的其实就是Vue2中的beforeCreate和create 在vue3中我们通过这个函数来定义vue2中的data,methods,watch,computed属性(数据定义与处理相关) 2.2、setup使用 ​ set

qq_44831027的博客 5912

Vite2+Vue3学习笔记(二):引入Vue-Router

新手小白Vue3学习笔记第二篇,在项目中使用Vue-Router,简单配置页面跳转路由。

YGいくこさん的博客 1598

vue3 学习笔记 (二)—— axios 的使用有变化吗?

本篇文章主要目的就是想告诉我身边,正在学 vue3 或者 准备学 vue3 的同学,vue3中网络请求axios该如何使用,防止接触了一点点 vue3 的同学会有个疑问?生命周期、router 、vux使用都改变了,那 axios 使用有没有啥改变? 小姐姐 使用 axios 之前,需要先安装好。 yarn add axios npm install axios bower install axios <script src="https://unpkg.com/axios/dist/a

前端人的博客 3670
上一篇: vue3学习笔记(一)
下一篇: webpack5从零搭建一个项目
阵雨丶
博客等级 码龄9年 126粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值