Vue.js `setup()` 函数的使用

Vue.js setup() 函数的使用

今天我们来聊聊 Vue 3 中的 setup() 函数。如果你正在使用 Vue 3,那么对 setup() 函数的理解和掌握将对你的开发工作大有裨益。

什么是 setup() 函数?

setup() 函数是 Vue 3 组合式 API(Composition API)的核心。它是组件中用于处理逻辑的入口函数,在组件实例创建之前执行。在 setup() 中,你可以定义响应式状态、计算属性、方法,以及使用生命周期钩子等。

setup() 函数的参数

setup() 函数接收两个参数:propscontext

  1. props:这是一个包含传递给组件的所有属性的对象。需要注意的是,props 是响应式的,当父组件传递的属性发生变化时,props 会自动更新。然而,直接解构 props 会导致其失去响应性。如果需要解构,可以使用 toRefstoRef

    import { toRefs } from 'vue';export default {props: {title: String,},setup(props) {const { title } = toRefs(props);console.log(title.value);},
    };
    
  2. context:这是一个包含组件上下文的对象,包含以下属性:

    • attrs:非响应式对象,包含传递给组件但未被声明为 props 的属性。
    • slots:非响应式对象,包含传递给组件的插槽内容。
    • emit:用于触发事件的方法。
    export default {setup(props, context) {const { attrs, slots, emit } = context;console.log(attrs);console.log(slots);emit('customEvent');},
    };
    

在模板中使用 setup() 返回的值

如果 setup() 返回一个对象,那么该对象的属性将被合并到组件的渲染上下文中,可以直接在模板中使用。

<template><div><p>{{ count }}</p><button @click="increment">增加</button></div>
</template><script>
import { ref } from 'vue';export default {setup() {const count = ref(0);const increment = () => {count.value++;};return {count,increment,};},
};
</script>

在上述示例中,setup() 返回了一个包含 countincrement 的对象,因此它们可以直接在模板中使用。

使用生命周期钩子

setup() 中,Vue 3 提供了组合式 API 的生命周期钩子函数,例如 onMountedonUpdatedonUnmounted

import { onMounted } from 'vue';export default {setup() {onMounted(() => {console.log('组件已挂载');});},
};

需要注意的是,这些生命周期钩子函数必须在 setup() 内部调用。

注意事项

  • this 的使用:在 setup() 中,this 不会指向组件实例,因此无法通过 this 访问组件的属性或方法。如果需要访问组件的属性或方法,应通过 propscontext 参数。
  • 与 Options API 的关系:虽然组合式 API 提供了更灵活的方式来组织组件逻辑,但它并不是完全取代 Options API。在一些简单的组件中,使用 Options API 可能更为直观。你可以根据项目需求选择使用哪种 API。

总结
setup() 函数是 Vue 3 组合式 API 的核心,为我们提供了一种更灵活、高效的方式来组织和复用组件逻辑。通过掌握 setup() 的使用,你可以更轻松地管理组件的状态和行为,提高代码的可维护性和可读性。

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

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

相关文章

【某大厂一面】HashSet底层怎么实现的

HashSet 是 Java 集合框架中的一个非常常用的集合类&#xff0c;它实现了 Set 接口&#xff0c;并且底层通常是通过 哈希表&#xff08;HashMap&#xff09;来实现的。要理解 HashSet 的底层实现&#xff0c;我们需要从哈希表的工作原理开始讲起。下面是对 HashSet 底层实现的详…

是否需要显式使用 epoll_ctl ( fd , EPOLL_CTL_DEL , ... ) 来从红黑树里显式删除过期的套接字

&#xff08;1&#xff09;关于 epoll 操作的三大系统函数&#xff1a; epoll_create ( … ) 、 epoll_ctl ( … ) 、 epoll_wait&#xff08;…&#xff09;。具体的函数原型略。这些函数完成了 epoll 对象的创建、 套接字往 epoll 红黑树中的添加、修改 与 删除 。 本文的整理…

算法随笔_30: 去除重复字母

上一篇:算法随笔_29:最大宽度坡_方法3-CSDN博客 题目描述如下: 给你一个字符串 s &#xff0c;请你去除字符串中重复的字母&#xff0c;使得每个字母只出现一次。需保证 返回结果的字典序最小&#xff08;要求不能打乱其他字符的相对位置&#xff09;。 示例 1&#xff1a; …

Vue 3 30天精进之旅:Day 08 - 组件通信

在Vue 3的开发过程中&#xff0c;组件之间的通信是一个至关重要的概念。理解如何在父子组件、兄弟组件以及通过全局事件总线进行通信&#xff0c;将帮助我们构建更为灵活和可维护的应用。在今天的学习中&#xff0c;我们将探讨以下几个方面&#xff1a; 父子组件之间的通信兄弟…

【Hadoop】Hadoop 概述

Hadoop 概述 Hadoop 是什么Hadoop 发展历史Hadoop 三大发行版本Hadoop 优势&#xff08;4 高&#xff09;Hadoop 组成&#xff08;面试重点&#xff09;HDFS 架构概述YARN 架构概述MapReduce 架构概述HDFS、YARN、MapReduce 三者关系 大数据技术生态体系 Hadoop 是什么 Hadoop…

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发&#xff0c;经过2个来月的努力&#xff0c;于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志&#xff08;网络爬虫学习&#xff1a;应用selenium从搜…

关于使用微服务的注意要点总结

一、防止过度设计 微服务的拆分一定要结合团队人员规模来考虑&#xff0c;笔者就曾遇到过一个公司的项目&#xff0c;是从外部采购回来的&#xff0c;微服务划分为十几个应用&#xff0c;我们在此项目基础上进行自行维护和扩展。由于公司业务规模不大&#xff0c;而且二次开发的…

CSS Fonts(字体)

CSS Fonts(字体) 在网页设计中,字体是传达信息情感和风格的关键元素。CSS(层叠样式表)提供了丰富的字体样式和属性,使得网页设计者能够根据需求选择合适的字体,从而提升用户体验。本文将详细介绍CSS字体相关的知识,包括字体的选择、加载、样式设置等。 字体的选择 选…

week08_文本匹配任务

1、文本匹配任务概述 狭义&#xff1a; 给定一组文本&#xff0c;判断其是否语义相似 今天天气不错 match 今儿个天不错呀 √ 今天天气不错 match 你的代码有bug 以分值形式给出相似度 今天天气不错 match 今儿个天不错呀 0.9 今天天气不错 match…

Deepseek技术浅析(一)

DeepSeek 是北京深度求索人工智能基础技术研究有限公司推出的人工智能技术品牌&#xff0c;专注于大语言模型&#xff08;LLM&#xff09;的研发与应用。其技术涵盖了从模型架构、训练方法到应用部署的多个层面&#xff0c;展现出强大的创新能力和应用潜力。以下将详细介绍 Dee…

火出圈的DeepSeeK R1详解

各位宝子们,新年好! 模型特性 DeepSeek-R1是一款创新的AI推理模型,具有多项独特特性: 高性能推理能力 :在数学、代码和自然语言推理等任务上表现出色,性能对标OpenAI o1正式版。 强化学习驱动的训练 :采用大规模强化学习技术,仅需极少量标注数据,显著提升推理能力。…

Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)

文章目录 Kafka 副本机制&#xff08;包含AR、ISR、OSR、HW 和 LEO 介绍&#xff09;1. 副本的基本概念2. 副本同步和一致性2.1 AR&#xff08;Assigned Replicas&#xff09;2.2 ISR&#xff08;In-Sync Replicas&#xff09;2.3 OSR&#xff08;Out-of-Sync Replicas&#xf…

【JavaEE】_MVC架构与三层架构

目录 1. MVC架构 2. 三层架构 3. MVC架构与三层架构的对比 3.1 MVC与三层架构的对比 3.2 MVC与三层架构的共性 1. MVC架构 在前文已介绍关于SpringMAC的设计模式&#xff0c;详见下文&#xff1a; 【JavaEE】_Spring Web MVC简介-CSDN博客文章浏览阅读967次&#xff0c;点…

CAPL与外部接口

CAPL与外部接口 目录 CAPL与外部接口1. 引言2. CAPL与C/C++交互2.1 CAPL与C/C++交互简介2.2 CAPL与C/C++交互实现3. CAPL与Python交互3.1 CAPL与Python交互简介3.2 CAPL与Python交互实现4. CAPL与MATLAB交互4.1 CAPL与MATLAB交互简介4.2 CAPL与MATLAB交互实现5. 案例说明5.1 案…

【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)

1. 简介 柱状图作为科研论文中常用的实验结果对比图&#xff0c;本文采用了3组实验对比的效果展示图&#xff0c;代码已调试好&#xff0c;只需替换数据即可生成相关柱状图&#xff0c;为科研加分。通过获得Nature配色的柱状图&#xff0c;让你的论文看起来档次更高&#xff0…

随机森林例子

完整代码&#xff1a; # 导入必要的库 from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np# 加载鸢尾花数…

【QT】 控件 -- 显示类

&#x1f525; 目录 [TOC]( &#x1f525; 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 &#x1f525; 1. 前言 之前我在上一篇文章【QT】…

SpringBoot中@Valid与@Validated使用场景详解

SpringBoot中Valid与Validated使用场景详解 在实际开发中&#xff0c;参数校验是保证接口安全性和数据完整性的重要手段。Spring Boot提供了Valid和Validated两个核心注解来实现参数校验&#xff0c;但许多开发者对它们的区别和使用场景存在疑惑。本文将深入解析二者的差异&am…

基于PyQt设计的智能停车管理系统

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】设计意义【4】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】VSCODE【2】python【3】ptqt【4】HyperLPR31.5 参考文献二、安装Python环境1.1 环境介绍**1.2 Python版本介…

前端-Rollup

Rollup 是一个用于 JavaScript 的模块打包工具&#xff0c;它将小的代码片段编译成更大、更复杂的代码&#xff0c;例如库或应用程序。它使用 JavaScript 的 ES6 版本中包含的新标准化代码模块格式&#xff0c;而不是以前的 CommonJS 和 AMD 等特殊解决方案。ES 模块允许你自由…