首页 > 其他分享 >Vue3技术分享专栏 - Composition API详解

Vue3技术分享专栏 - Composition API详解

时间:2024-09-07 17:53:07浏览次数:11  
标签:count props value API Vue3 ref Composition

引言

在上一篇文章中,我们通过一个简单的“Hello World”示例介绍了如何使用Vue3和Composition API来创建响应式的组件状态。本文将更深入地探讨Composition API,解释其背后的原理,并提供一些实际的应用案例。

Composition API 概述

Composition API 是Vue3中的一个新特性,它为开发者提供了一种更加灵活的方式来组织组件内的逻辑。与Options API相比,Composition API使得逻辑复用变得更加简单直接,并且能够更好地与TypeScript协同工作,提供强大的类型推断。

setup()函数

setup()函数是Composition API的核心,它是每个Vue3组件的入口点。它接受两个参数:props和context。props是从父组件传递给子组件的属性,而context包含了其他有用的属性,如emit方法用于触发事件。

import { ref } from "vue";

export default {
  props: ["initialMessage"],
  setup(props, context) {
    const message = ref(props.initialMessage);

    function changeMessage(newMessage) {
      message.value = newMessage;
      context.emit("message-changed", message.value);
    }

    return {
      message,
      changeMessage,
    };
  },
};

在上面的例子中,我们定义了一个changeMessage函数,它可以改变message的值,并通过context.emit触发一个名为message-changed的事件,通知父组件消息已更改。

ref和reactive

refreactive是Composition API提供的两种创建响应式数据的方式。ref用于创建一个包含单一值的响应式包装器,而reactive则使整个对象变为响应式的。

// 使用ref
const count = ref(0);

// 使用reactive
const state = reactive({ count: 0 });

使用ref的好处在于它提供了一个.value属性,这使得在模板中使用时更加直观。而reactive则更适合处理复杂的对象结构。

watchEffect

watchEffect是一个自动触发的副作用函数,它会在依赖项变化时自动运行。这对于那些需要在数据变化时执行某些操作的情况非常有用。

let count = ref(0);

watchEffect(() => {
  console.log(`Count is now ${count.value}`);
});

在这个例子中,每当count发生变化时,控制台就会打印出当前的值。

实战案例

假设我们需要创建一个计数器组件,该组件接收一个初始值,并允许用户增加或减少计数器的值。我们可以使用Composition API来组织这个组件的逻辑。

<template>
  <div>
    <p>Count is: {{ count.value }}</p>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
  </div>
</template>

<script>
import { ref, watchEffect } from 'vue';

export default {
  props: ['initialCount'],
  setup(props) {
    const count = ref(props.initialCount);

    function increment() {
      count.value++;
    }

    function decrement() {
      count.value--;
    }

    // 监听count的变化并在控制台中打印
    watchEffect(() => {
      console.log(`Count changed to ${count.value}`);
    });

    return { count, increment, decrement };
  }
};
</script>

结语

通过这篇关于Composition API的文章,我们不仅了解了它的基本概念和用法,而且还看到了如何在实际开发中应用这些概念。在未来的文章中,我们将继续探索Vue3的其他特性,并分享更多实用的技巧和最佳实践。


希望这篇文章能够帮助你进一步理解Vue3中的Composition API,并为你的开发工作带来便利。如果你有任何问题或想要讨论的地方,欢迎留言。

 

标签:count,props,value,API,Vue3,ref,Composition
From: https://blog.csdn.net/qq_39813901/article/details/141998146

相关文章

  • 基于mediapipe和pyttsx3技术实现一个姿态识别语音播报器
    系列文章目录第一章Python机器学习入门之mediapipe和pyttsx3的结合使用文章目录系列文章目录前言一、mediapipe和pyttsx3是什么?二、使用步骤1.引入库2.读入数据总结前言在比赛准备时,由于比赛任务要求需要机器人在自主迅游中记录家庭成员的行为动作,并进行语音播报......
  • VUE框架Vue3使用API进行响应式数据判断的解析------VUE框架
    <template></template><script>import{reactive,isRef,ref,isProxy,isReactive,readonly,isReadonly}from'vue';exportdefault{name:"App",setup(){//定义很多个变量//这些变量那些是具有响应式,哪些是没有响......
  • [ABC293Ex] Optimal Path Decomposition 题解
    [ABC293Ex]OptimalPathDecomposition题解是一道难得一遇的好题。对于题目中的两个限制,同时满足是困难的,于是考虑常见的套路:先固定其中一个,再计算另一个。对于本题,显然\(k\)是有单调性的,于是考虑二分这个\(k\),将最优性问题转化为可行性问题,dp路径的最小长度。那么考虑d......
  • HTML 转 PDF API 接口
    HTML转PDFAPI接口网络工具/文件处理支持网页转PDF高效生成PDF/提供永久链接。1.产品功能超高性能转换效率;支持将传递的HTML转换为PDF,支持转换HTML中的CSS格式;支持传递网站URL,直接转换页面成对应的PDF文件;转换后的PDF提供永久存储文件地址;全接口......
  • AI大语言模型LLM学习-WebAPI搭建
    系列文章1.AI大语言模型LLM学习-入门篇2.AI大语言模型LLM学习-Token及流式响应前言在上一篇博文中,我们调用了在线大模型API,并用Python写了一个控制台流式对话客户端,基本能愉快的与大模型对话聊天了。但控制台总归太技术化,我们希望能有个类似ChatGPT那样的Web......
  • 【第97课】云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • Canvas艺术之旅:了解几个绘制基本图形的 API
    了解几个绘制基本图形的APICanvas是HTML5提供的绘画API,可以用于在Web页面上绘制各种基本图形。本文介绍一些Canvas绘制基本图形的API:前置条件注意:本文章所提供的代码示例默认已经进行了canvas元素定义,DOM获取以及canvas的上下文获取,以下进行代码演示时将......
  • 什么是API?
    在这个数字化时代,我们的生活越来越依赖于各种应用程序和在线服务。从社交媒体到在线购物,从智能家居到企业软件,这些应用程序的背后,是一系列复杂的技术在协同工作。而在这个复杂的技术网络中,API(应用程序编程接口)扮演着至关重要的角色。一、什么是API?API,即应用程序编程接口,是一......
  • 必应每日壁纸API封装
    简介这个类封装了必应首页的每日壁纸查看功能,提供了查看、保存壁纸的方法,最大支持查看近8天的壁纸使用方法asyncTaskMain(){ try { varbing=BingWallpaperAPI.CreateInstance(8);//初始化,参数8表示一共会加载8张图片 vartask=awaitbing.Current(); task.Wal......
  • css中的响应式单位rpx,vue3中@import的导入
    尺寸单位,px和rpx对比px单位像素是图像的基本采样单位,它不是一个确定的物理量,不同的设备,其图像基本单位是不同的,比如显示器的点距,可以认为是显示器的物理像素rpx单位可以根据屏幕宽度进行自适应。rpx其实是微信对于rem的一种应用的规定,或者说一种设计的方案,官方上规定屏幕......