广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3.2 setup语法糖及Hook函数基本使用
  • 490
分享到

Vue3.2 setup语法糖及Hook函数基本使用

2024-04-02 19:04:59 490人浏览 八月长安
摘要

目录引言setup(语法糖)1、基本使用2、自动注册3、组件通信defineEmit ----> [子组件向父组件事件传递] 代码示列:defineExpose ---->

引言

在2021 年 8 月 5 日,Vue发布了3.2版本的新写法,其中最主要的亮点就在于setup的语法糖,学过vue3.0的小伙伴都清楚,当我们在使用Vue3的语法就构建组件的时候,总是需要把外面定义的方法变量必须要return出去,比较麻烦一些,所以Vue官方这次提供了setup语法糖,有了他,我们可以更加简洁舒适的去构建组件。

setup(语法糖)

1、基本使用

在vue3.2中我们不再需要进行return,当使用 <script setup> 的时候,任何在 <script setup> 声明的顶层的绑定 (包括声明的变量,函数声明,以及 import 引入的内容) 都可以在模板中直接使用,这是因为在setup函数中,所有的ES模板都被认为是暴露給上下文的值,并包含在setup()返回对象中。

要使用这个语法,需要将 setup 属性添加到 <script> 代码块上,示列:

<script setup>
import {ref} from 'vue'
let property = ref('志拾陆');
</script>

这里面的代码会被编译成组件 setup() 函数的内容,这也就意味着与普通的 <script> 只在组件被首次引入的时候仅执行一次不同,<script setup> 中的代码会在每次组件实例被创建的时候执行。这一点非常的重要,也就是写在 <script setup> 中的代码,例如初始化的赋值等在组件每次实例创建时都重新执行一次。

2、自动注册

使用3.2的语法时,如果需要像之前一样去引入其他组件,就无需再通过components进行注册,我们可以直接引入使用。示列:

<template>
  <subassembly @getChili="getChili" :title="msg" />
</template>
<script setup>
import {ref} from 'vue'
//这里我们引入了子组件 subassembly
import subassembly from './subassembly.vue'
</script>

3、组件通信

defineProps ----> [用来接收父组件传来的 props] 代码示列:

父组件代码:

<template>
  <div>我是父组件----1</div>
  <subassembly @getChili="getChili" :title="msg" />
</template>
<script setup>
import {ref} from 'vue'
import subassembly from './subassembly.vue'
//把值传递给子组件 ---> :title="msg"  <Home @getChili="getChili" :title="msg" />
const msg = ref('父的值')
</script>

子组件代码:

<template>
  <div>我是子组件----2</div>
  <div style="color: red">{{props.title}}</div>
</template>
<script setup>
import {defineProps} from 'vue'
//接收父组件 传过来的值!
const  props = defineProps({
  title: {
    type: String
  }
});
//打印一下 接收父组件的值
console.log(props.title) //父的值
</script>

defineEmit ----> [子组件向父组件事件传递] 代码示列:

子组件代码:

<template>
  <hr>
  <div>我是子组件----2</div>
  <button @click="toEmits">点击传到父组件</button>
</template>
<script setup>
import {defineEmits,ref} from 'vue'
//先定义一下子 在发送值
const  emits = defineEmits(['getChili']);
const  toEmits = () => {
  emits('getChili','子的值')
}
</script>

父组件代码:

<template>
  <div>我是父组件----1</div>
  <div>{{data}}</div>
  <subassembly @getChili="getChili" :title="msg" />
</template>
<script setup>
import {ref} from 'vue'
import subassembly from './subassembly.vue'
//空值接收 子组件的传值
let data = ref(null)
const getChili = (e) => {
  data.value = e
  console.log(e)  //子组件的值
}
</script>

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

defineExpose ----> [组件暴露出自己的属性] 代码示列:

子组件代码:

<template>
  <div>我是子组件----2> {{ xiaoZhi.stator }}</div>
</template>
<script setup>
import {ref, defineExpose, Reactive} from 'vue'
let xiaoZhi = reactive({
  stator: '小志',
  age: 27
})
let xiaoXiaoZhi = ref('小小志');
console.log(xiaoXiaoZhi)
defineExpose({
  xiaoZhi,
  xiaoXiaoZhi
})
</script>

父组件代码:

<template>
  <button @click="shiEmots">获取暴露</button>
  <subassembly ref="shield"/>
</template>
<script setup>
import subassembly from './subassembly.vue'
import {defineEmits,defineProps,ref} from 'vue'
const shield = ref()
const  shiEmots = () =>{
  //子组件接收暴露出来得值
  console.log('接收reactive暴漏出来的值',shield.value.xiaoZhi)
  console.log('接收ref暴漏出来的值',shield.value.xiaoXiaoZhi)
}
</script>

结果:

hook函数

介绍:

  • Vue3 的 hook函数 相当于 vue2 的 mixin, 不同在与 hooks 是函数
  • Vue3 的 hook函数 可以帮助我们提高代码的复用性, 让我们能在不同的组件中都利用 hooks 函数

示列 :

1、首先我们需要创建一个hooks的文件 文件示列:

2、在hookds文件下,我们创建一个我们需要使用的.js文件 这里我们比如时usePoint.js

这里我们在usePoint里面写了一个获取鼠标点击位置的方法 代码示列:

import {reactive, onMounted, onBeforeUnmount} from 'vue'
export  default function () {
    //展示的数据  可以通过App.vue 界面去隐藏
    let point = reactive({
        x: 0,
        y: 0
    })
    //获取鼠标点击事件
    function savePonint(event) {
        point.x = event.pageX
        point.y = event.pageY
        console.log(event.pageX, event.pageY)
    }
    //现实之后调用 挂载完毕
    onMounted(() => {
        window.addEventListener('click', savePonint)
    })
    //在隐藏之前调用 卸载之前
    onBeforeUnmount(() => {
        window.removeEventListener('click', savePonint)
    })
    return point
}

我们在组件中引入此文件 代码示列:

<template>
  <h3>当前求和:{{ sum }}</h3>
  <button @click="sum++">点我加一</button>
  <hr>
  <h3>当前鼠标点击坐标为:x:{{ point.x }},y:{{ point.y }}</h3>
</template>
<script>
import {ref} from 'vue'
//复用的usePoint
import usePoint from "../hooks/usePoint";
export default {
  name: 'App',
  setup() {
    //数据
    let sum = ref(0)
    let point = usePoint()
    return {sum,point}
  },
}
</script>

结果展示:

总得来说,新引入的setup语法糖的 目的是简化使用Composition api时冗长的模板代码,也就是让代码更加简洁,阅读性也越高。而在组件中引入并使用自定义hook 自定义hook的作用类似于vue2中的mixin技术 自定义Hook的优势: 很清楚复用功能代码的来源, 更清楚易懂!

以上就是Vue3.2 setup语法糖及Hook函数基本使用的详细内容,更多关于Vue3.2 setup语法糖Hook函数的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue3.2 setup语法糖及Hook函数基本使用

本文链接: https://www.lsjlt.com/news/153672.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3.2 setup语法糖及Hook函数基本使用
    目录引言setup(语法糖)1、基本使用2、自动注册3、组件通信defineEmit ----> [子组件向父组件事件传递] 代码示列:defineExpose ---->...
    99+
    2022-11-13
  • 一文搞懂Vue3.2中setup语法糖使用
    目录前言一、如何使用setup语法糖二、data数据的使用三、method方法的使用四、watchEffect的使用五、watch的使用六、computed计算属性的使用七、prop...
    99+
    2022-11-13
  • Vue3中的setup语法糖、computed函数、watch函数怎么使用
    这篇文章主要介绍“Vue3中的setup语法糖、computed函数、watch函数怎么使用”,在日常操作中,相信很多人在Vue3中的setup语法糖、computed函数、watch函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简...
    99+
    2023-07-05
  • Vue3中的setup语法糖、computed函数、watch函数如何用
    computed函数computed 函数的使用:其实我们什么情况下会使用计算属性呢,那一定是通过依赖的数据得到新的数据!1)从Vue中引入computed 2)在setup中进行使用,将一个函数,函数的返回值就是计算好的数据 3)最后呢通...
    99+
    2023-05-17
    Vue3 setup computed
  • Go语言基础函数基本用法及示例详解
    目录概述语法函数定义一.函数参数无参数无返回有参数有返回函数值传递函数引用传递可变参数列表 无默认参数函数作为参数二、返回值多个返回值跳过返回值匿名函数匿名函数可以赋值给一个变量为函...
    99+
    2022-11-12
  • PHP函数的基本使用方法
    在现代的网页应用程序中,PHP作为一种重要的服务器端编程语言,被广泛应用。PHP中的函数是一种可重用的代码块,不仅简化了代码的编写,而且提高了代码的可维护性和可读性。本文将介绍PHP函数的基本使用方法,以帮助读者更好地理解和应用PHP函数。...
    99+
    2023-05-22
    方法 PHP函数 基本使用
  • Python OpenCV的基本使用及相关函数
    目录1、图像的读取2、图像保存3、图像展示4、获取图像属性5、图像缩放(宽,高)6、在原图像中获取某一区域7、彩色图像通道分解8、图像加法9、图像反转10、图像金字塔11、直方图12...
    99+
    2022-11-11
  • javascript之generator生成器函数与asnyc/await语法糖怎么使用
    这篇文章主要讲解了“javascript之generator生成器函数与asnyc/await语法糖怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript之generat...
    99+
    2023-07-05
  • Go语言的基本语法与常用函数是什么
    今天小编给大家分享一下Go语言的基本语法与常用函数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本语法标识符命名...
    99+
    2023-07-02
  • R语言利用plot()函数画图的基本用法
    plot()函数在R语言画图中位置十分重要,现在就对其具体用法做一个总结。  基本用法: plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题",...
    99+
    2022-11-11
  • 深入了解Go语言的基本语法与常用函数
    目录一、基本语法标识符命名规范变量的定义与使用定义常量二、常用函数main 函数与 init 函数fmt 包及其函数一、基本语法 标识符命名规范 Go 是区分大小写的,标识符的命名包...
    99+
    2022-11-13
  • Numpy中Meshgrid函数基本用法及2种应用场景
    目录引言Meshgrid函数的基本用法Meshgrid函数的一些应用场景总结引言 近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法。 但总觉得印象...
    99+
    2022-11-11
  • mysql中find_in_set函数的基本使用方法
    前言 这是我最近新接触到的一个函数, 我在项目中的使用场景是这样的: 有一个应用类型表,表中有parentId字段和parentIds字段,前者为父级id,后者为多级父级id,在库中都是varchar类型,paren...
    99+
    2022-05-24
    mysql find_in_set函数 mysql find_in_set函数 in
  • ES6基础语法之函数怎么使用
    这篇“ES6基础语法之函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ES6基础语法之函数怎么使用”文章吧。一、函...
    99+
    2023-06-30
  • 如何解析Python中的基本函数及其常用用法
    今天就跟大家聊聊有关如何解析Python中的基本函数及其常用用法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一...
    99+
    2023-06-01
  • C语言函数的基本使用和递归小结
    本章目标 秃头侠们好呀,今天我们一起学习函数! 目标: 本章主要掌握函数的基本使用和递归 函数是什么 数学中我们常见到函数的概念。但是你了解C语言中的函数吗? 维基百科中对函数的定义...
    99+
    2022-11-12
  • C语言函数的基本使用和递归详解
    目录本章目标函数是什么C语言中函数的分类库函数如何学会使用库函数?自定义函数函数的参数函数的调用:函数的嵌套调用和链式访问嵌套调用链式访问函数的声明和定义函数递归什么是递归?递归的两...
    99+
    2022-11-12
  • JavaScript函数的定义与基本使用方法
    本篇内容介绍了“JavaScript函数的定义与基本使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-19
  • JavaScript函数的定义和基本使用方法
    1.用函数语句定义 先给一个例子,该函数的功能是返回数组元素的和; function sumArray(arr) { var sum = 0; for(var...
    99+
    2022-11-13
  • R语言基本画图函数与多图多线的用法
    常用统计作图函数汇总 plot() hist() 直方图 stem() 茎叶图 boxplot() 箱线图(盒形图) coplot() 协同图 qqnorm() 正态qq图 qqpl...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作