前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue3学习笔记 —— Composition API 快速入门

Vue3学习笔记 —— Composition API 快速入门

作者头像
Gorit
发布于 2021-12-08 13:17:47
发布于 2021-12-08 13:17:47
54100
代码可运行
举报
运行总次数:0
代码可运行

Vue3 Composition API 学习

一、学习预览

  1. Setup
  2. 响应式应用
  3. 方法
  4. 计算属性
  5. Watch

二、创建 Vue3 项目

前提查看一下你的 Vue 版本是否是大于 4.5.0 的。不是的话就得创建vue 2 项目,然后手动升级到 vue3

项目创建有两种方式

  1. 纯命令安装
  2. 脚手架创建

创建步骤(命令行创建)

  1. vue create vue3demo
  2. 指定添加的依赖(步骤省略)
  1. 项目创建好后,进入 src 目录,然后输入 npm run serve 运行项目
  2. 当你看到如下信息时,说明你的项目启动成功了!!!

三、Vue3 引用和方法

对比 Vue2 中 OPTIONS API,data 和 methods 的定义如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
export default {
  data () {
	  return {
		  name: '小皮'
	  }
  },
  methods: {
	  
  }
}
</script>

在 Vue3 中,上述的方式依然可以使用。但是我们今天要使用 Vue3 的 Composition API 完成同样的功能

3.1 Composition API setup() 函数 的响应式引用

学习指引:

  1. 在 setup 函数中定义参数
  2. 在 setup 函数中定义方法
  3. 在 setup 函数中定义计算属性

setup 函数

  • 使用 Composition API 的入口
  • 在 beforeCreate 之前调用
  • 在 setup 中没有 this 关键字

ref 函数

  • 返回一个 响应式引用
  • name 是一个响应式对象
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div id="app">
		<h2>姓名:{{name}}</h2>
		<h2>年龄:
			<button type="button" @click="changeAge(-1)">+</button>
			{{age}} 
			<button type="button" @click="changeAge(1)">+</button>
		</h2>
		<h2>出生年份: (插值表达式实现) {{2020 - age}}</h2>
		<h2>出生年份:(计算属性实现)
			<button type="button" @click="changeYear(-1)">-</button>
			{{year}}
			<button type="button" @click="changeYear(1)">+</button>
		</h2>
  </div>
</template>

<script>
import { ref , computed} from 'vue'

export default {
	name: 'App',
	setup () {
		// 使用 方法 和 对象必须使用响应是对应式的。都必须返回
		const name = ref('Hello')
		const age = ref(18)
		const year = computed({
			// 设置 getter 和 setter
			get: () => {
				return 2020 - age.value
			},
			set: val => {
				age.value = 2020 - val
			}
		})
		function changeAge(val) {
			// age 是一个响应式对象,直接 age++ 是错误的
			age.value+=val;
		}
		// 计算属性
		function changeYear(val) {
			year.value = year.value + val
		}
		return {name,age,changeAge,year, changeYear}
	}
}
</script>

<style>
</style>

3.2 Composition API setup() 函数 响应式对象

上面的代码是不是看起来很冗余,这下我们使用 响应式对象 来简化上面的代码

  • 使用 reactive 将一个对象 => 响应式对象
  • 使用 toRefs 将 响应式对象 => 普通对象
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div id="app">
		<h2>姓名:{{name}}</h2>
		<h2>年龄:
			<button type="button" @click="changeAge(-1)">+</button>
			{{age}} 
			<button type="button" @click="changeAge(1)">+</button>
		</h2>
		<h2>出生年份: (插值表达式实现) {{2020 - age}}</h2>
		<h2>出生年份:(计算属性实现)
			<button type="button" @click="changeYear(-1)">-</button>
			{{year}}
			<button type="button" @click="changeYear(1)">+</button>
		</h2>
  </div>
</template>

<script>
import { reactive , computed, toRefs} from 'vue'

export default {
	name: 'App',
	setup () {
		const data = reactive({
			name: '小皮',
			age: 18,
			year: computed({
				// 设置 getter 和 setter
				get: () => {
					return 2020 - data.age
				},
				set: val => {
					data.age = 2020 - val
				}
			})
		})
		function changeAge(val) {
			data.age+=val
		}
		// 计算属性
		function changeYear(val) {
			data.year = data.year + val
		}
		// 直接返回 data 是一个响应式的数据,在上面需要使用 data.xxx 属性得到属性,如果需要在上面直接使用属性,可以使用该方式
		// 使用 ..toRefs() 方法将一个整体的响应式对象 变成 普通对象,然后在展开(解包)得到 单独的响应式数据
		return {...toRefs(data), changeAge, changeYear}
	}
}
</script>

<style>
</style>

效果同上图

3.3 Composition API setup() 函数 参数

在父子组件传参中,会使用到如下两个参数

  • props
  • context
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { reactive , computed, toRefs, watch} from 'vue'

export default {
	name: 'App',

	// setup 参数
	props: {
		title: String
	},
	
	// context 获取插槽,属性
	setup (props, context) {
		const data = reactive({
			name: '小皮',
			age: 18,
			year: computed({
				// 设置 getter 和 setter
				get: () => {
					return 2020 - data.age
				},
				set: val => {
					data.age = 2020 - val
				}
			})
		})
		// 使用监听器
		watch (() => props.title, (newTitle,oldTitle) => {
			console.log(newTitle,oldTitle)
			context.emit('title-changed')
		})
		function changeAge(val) {
			data.age+=val
		}
		// 计算属性
		function changeYear(val) {
			// 响应式对象
			data.year = data.year + val
		}
		return {...toRefs(data), changeAge, changeYear}
	}
}
</script>

四、Vue3 Composition API 使用总结

对比 vue2,我们使用一些内置的方法。Vue3 用一个更大的变化

  1. Composition API 的入口在 setup() 函数中
    • reactive 响应式对象
    • ref 接收一个参数并返回响应式对象
  2. 原先在 Vue2 中的 methods,watch,component、data 均写在 setup() 函数,使用之前需要自行导入
  3. 回归了 function xxx 定义函数
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
欧拉筛法(线性筛)的学习理解
在刚接触编程语言时,对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n^2),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期。在数论的学习中,我学到了埃氏筛法,O(nloglogn)的算法,而在一些数据范围达到1e7这样的题目中,也很难让人满意,于是我便学习了欧拉筛法,也即 O(n)的线性筛法。
全栈程序员站长
2022/07/22
1.8K0
欧拉筛法(线性筛)的学习理解
面试官本想拿一道求素数搞我,但被我优雅的"回击"了
现在的面试官,是无数开发者的梦魇,能够吊打面试官的属实不多,因为大部分面试官真的有那么那几下子。但在面试中,我们这些小生存者不能全盘否定只能单点突破—从某个问题上让面试官眼前一亮。这不,今天就来分享来了。
bigsai
2020/12/17
4100
面试官本想拿一道求素数搞我,但被我优雅的"回击"了
线性筛素数(探索中的不断优化)
工欲善其事必先利其器 首先素数是什么? 素数就是一个数除了1和他本身没有其他因数的数叫做质数。 合数即为对立概念 当然,1既不是素数也不是合数 素因子是什么? 由欧拉函数得到结论: 每一个合数都可以写成几个素数相乘的形式, 这些素数即为该合数的质因子
glm233
2020/09/28
6040
Java实现质数筛的三种方法
今天在做一个算法题的时候遇到一个需要求质数的情况,但是本人比较菜只会暴力做法,所以在此记录学习一下质数筛选除了暴力以外的其它做法!
才疏学浅的木子
2023/10/17
3750
Java实现质数筛的三种方法
质数筛与欧拉函数
我们提前设置一个标记数组prime[N] ,提前标记好数字的质数状态,这样就能减少重复判断。
fishhh
2022/08/30
6610
质数筛与欧拉函数
基础数论总结
从右往左。可以一直递推,然后到最后一项,然后快速幂求矩阵,矩阵最终的结果就是所求结果。更新:java的矩阵通用乘法可以表示为,可以将下列代码替换道ac代码中:
bigsai
2019/09/24
7510
基础数论总结
204. 计数质数
解1:小学数学没有学好,先来一下质数定义。质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。暴力拆解,时间复杂度达不到,数很大时,耗时长。看解2。
张伦聪zhangluncong
2022/10/26
6230
C/C++中的素数判定
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:C/C++中的素数判定 更多内容请见👇 C/C++中的基础数据类型 C与C++的最常用输入输出方式对比 C语言竟支持这些操作:C语言神奇程序分享 ---- 本文目录 1.什么是素数 2.素数的两种判断方法 2.1 暴力法 2.1.1 从 2 到 √n 2.1.2 6n-1与6n+1 2.2 筛法 2.2.1 埃
小嗷犬
2022/11/15
8440
C/C++中的素数判定
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
简介:数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
GeekLiHua
2025/01/21
870
【狂热算法篇】解锁筛法密码:埃氏筛与线性筛(欧拉筛)的深度剖析
这里有点草率,但是还是可以看懂的,每次以遍历选中的倍数去标记成合数也就是1,每次遍历的都是素数,也就是为0,放入primer数组,直到达到我们设定的顶值n;后面会依次对下面的两种筛法做靠近调整(基于两个for嵌套方式不同以及优化的不同)。
羑悻的小杀马特.
2025/01/23
1390
【狂热算法篇】解锁筛法密码:埃氏筛与线性筛(欧拉筛)的深度剖析
【欧拉计划第 10 题】 质数之和 Summation of primes
首先单看题目知识点,涉及到素数(质数),和第七题 10001st prime一定会有类似之处
攻城狮杰森
2022/06/03
6670
素数的筛法
素数的筛法有很多种 在此给出常见的三种方法 以下给出的所有代码均已通过这里的测试 埃拉托斯特尼筛法 名字好长 :joy:  不过代码很短 思路非常简单,对于每一个素数,枚举它的倍数,它的倍数一定不是素数 这样一定可以保证每个素数都会被筛出来 还有,我们第一层循环枚举到 就好,因为如果当前枚举的数大于n,那么它能筛出来的数一定在之前就被枚举过 比如说: 不难发现我们从20枚举所筛去的数一定被5筛过 1 #include<cstdio> 2 #include<cmath> 3 using na
attack
2018/04/11
1.3K0
素数的筛法
三种素数筛的比较
在自然数集中,质数的数量不多而且分布比较稀疏,对于一个整数N,不超过N的质数大概有N/lnN个,即每lnN个数中可能会有一个质数。
ACM算法日常
2018/12/13
1.4K0
素数筛选算法
最近学习了一种筛素数的方法,能够以时间复杂度O(n),即线性时间完成。一开始不能理解其中的一句话,搜索了很久,大部分结果都是一群人在网上卖萌。好好思索了一番,按照自己的思路终于理解了。本文的内容绝不卖萌,但也难称严谨,仅以备忘,欢迎斧正。
我是东东东
2018/08/01
1.1K0
欧拉函数求法
φ(x)=x*(p1-1)/p1*(p2-1)/p2*(p3-1)/p3…*(pn-1)/pn 其中p1,p2,p3…是x的质因数;
全栈程序员站长
2022/09/23
3790
客户端基本不用的算法系列:素数筛法
今天的内容实用而且简单!素数问题是从来都是数学家热衷探索的领域,也是程序设计竞赛和 LC 中,解决数论相关问题的基础,下面本文介绍如何更科学地筛素数和一些相关的小知识。
用户2932962
2019/12/22
1.7K0
leetcode每日一题:204. 计数质数
https://leetcode-cn.com/problems/count-primes/
用户3578099
2020/12/14
4400
浅谈欧拉函数[通俗易懂]
欧拉函数听起来很高大上,但其实非常简单,也是NOIP里的一个基础知识,希望大家看完我的博客能有所理解。 数论是数学的一个分支,它只讨论正整数的性质,所以以下都是针对正整数进行研究的。
全栈程序员站长
2022/09/23
1.3K0
数论及数论四大定理
数论是纯粹数学的分支之一,主要研究整数的性质。整数可以是方程式的解(丢番图方程)。有些解析函数(像黎曼ζ函数)中包括了一些整数、质数的性质,透过这些函数也可以了解一些数论的问题。透过数论也可以建立实数和有理数之间的关系,并且用有理数来逼近实数(丢番图逼近)。 按研究方法来看,数论大致可分为初等数论和高等数论。初等数论是用初等方法研究的数论,它的研究方法本质上说,就是利用整数环的整除性质,主要包括整除理论、同余理论、连分数理论。高等数论则包括了更为深刻的数学研究工具。它大致包括代数数论、解析数论、计算数论等等。
Coggle数据科学
2019/09/12
3.1K0
数论及数论四大定理
欧拉函数
通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 其中 p1, p2……pn 为 x 的所有质因数,x 是不为 0 的整数 φ(1)=1(唯一和 1 互质的数就是 1 本身)【注意:每种质因数只一个。比如 12=223】
Cell
2022/02/25
4710
欧拉函数
相关推荐
欧拉筛法(线性筛)的学习理解
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • Vue3 Composition API 学习
  • 一、学习预览
  • 二、创建 Vue3 项目
  • 三、Vue3 引用和方法
    • 3.1 Composition API setup() 函数 的响应式引用
    • 3.2 Composition API setup() 函数 响应式对象
    • 3.3 Composition API setup() 函数 参数
  • 四、Vue3 Composition API 使用总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档