vue3入门教程:reactive函数

news2024/12/25 22:00:53

基本用法

  1. 引入 reactive

    首先,你需要从 vue 包中引入 reactive 函数:

    import { reactive } from 'vue';
    
  2. 创建一个响应式对象

    使用 reactive 函数来创建一个响应式对象:

    const state = reactive({
      count: 0,
      name: 'Vue 3'
    });
    

    在这个例子中,state 是一个响应式对象,它包含了 countname 这两个属性。

  3. 在模板中使用

    在 Vue 组件的模板中,你可以直接访问响应式对象的属性:

    <template>
      <div>
        <p>Count: {{ state.count }}</p>
        <p>Name: {{ state.name }}</p>
      </div>
    </template>
    

    当这些属性发生变化时,模板将自动更新。

深层响应性

reactive() 提供的响应性是深层的,这意味着它可以处理嵌套的对象结构。例如:

const nestedState = reactive({
  user: {
    name: 'John',
    age: 30
  },
  posts: [
    { title: 'Post 1', content: '...' },
    { title: 'Post 2', content: '...' }
  ]
});

在这个例子中,nestedState 是一个响应式对象,它包含一个名为 user 的响应式对象和一个名为 posts 的响应式数组。你可以像访问普通对象属性一样访问这些嵌套的响应式数据。

在组合式 API 中使用

reactive() 通常与 Vue 的组合式 API 一起使用,特别是在 setup 函数中:

import { reactive } from 'vue';

export default {
  setup() {
    const state = reactive({
      count: 0,
      name: 'Vue 3'
    });

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

    return {
      state,
      increment
    };
  }
};

在模板中,你可以直接访问 state 对象及其属性。

注意事项和局限性

  1. 仅支持对象类型reactive() 仅对对象类型有效(如对象、数组、Map、Set 等集合类型),对原始类型(如 String、Number、Boolean)无效。

  2. 解构赋值会丢失响应性:如果你对响应式对象进行解构赋值,解构出来的属性将失去其响应性。如果需要保持响应性,可以使用 toRefstoRef 函数。

  3. 避免直接替换响应式对象:如果你直接替换一个响应式对象(例如 state = reactive({...})),将会导致对初始引用的响应性连接丢失。

示例代码

以下是一个完整的示例,展示了如何在 Vue 组件中使用 reactive()

<template>
  <div>
    <p>Count: {{ state.count }}</p>
    <p>Name: {{ state.name }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

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

export default {
  setup() {
    const state = reactive({
      count: 0,
      name: 'Vue 3'
    });

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

    return {
      state,
      increment
    };
  }
};
</script>

在这个例子中,当点击按钮时,increment 函数会被调用,state.count 的值会增加,并且模板会自动更新以反映这个变化。

总结

reactive() 是 Vue 3 中用于创建响应式对象的强大工具。通过合理使用 reactive(),你可以更轻松地管理组件的状态,并实现数据的双向绑定和自动更新。

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

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

相关文章

消息队列(一)消息队列的工作流程

什么是消息队列 首先&#xff0c;代入一个场景&#xff0c;我现在做一个多系统的集成&#xff0c;分别有系统A、B、C、D四个系统&#xff0c;A系统因为使用产生了业务数据&#xff0c;B、C、D需要使用这些数据做相关的业务处理和运算&#xff0c;最基本的做法就是通过接口通信…

施耐德变频器ATV320系列技术优势:创新与安全并重

在工业自动化领域&#xff0c;追求高效、安全与智能已成为不可阻挡的趋势。施耐德变频器ATV320系列凭借其强大的设计标准和全球认证&#xff0c;成为能够帮助企业降低安装成本&#xff0c;提高设备性能的创新解决方案。 【全球认证&#xff0c;品质保障】ATV320 系列秉持施耐德…

WEB入门——文件上传漏洞

文件上传漏洞 一、文件上传漏洞 1.1常见的WebShell有哪些&#xff1f;1.2 一句话木马演示1.2 文件上传漏洞可以利用需满足三个条件1.3 文件上传导致的危害 二、常用工具 2.1 搭建upload-labs环境2.2 工具准备 三、文件上传绕过 3.1 客户端绕过 3.1.1 实战练习 &#xff1a;upl…

Android 蓝牙开发-传输数据

概述 传统蓝牙是通过建立REFCCOM sockect来进行通信的&#xff0c;类似于socket通信&#xff0c;一台设备需要开放服务器套接字并处于listen状态&#xff0c;而另一台设备使用服务器的MAC地址发起连接。连接建立后&#xff0c;服务器和客户端就都通过对BluetoothSocket进行读写…

红米Note 9 Pro5G刷小米官方系统

前言 刷机有2种方式&#xff1a;线刷 和 卡刷。 线刷 线刷&#xff1a;需要用电脑刷机工具&#xff0c;例如&#xff1a;XiaoMiFlash.exe&#xff0c;通过电脑和数据线对设备进行刷机。 适用场景&#xff1a; 系统损坏无法开机。恢复官方出厂固件。刷机失败导致软砖、硬砖的…

html + css 淘宝网实战

之前有小伙伴说&#xff0c;淘宝那么牛逼你会写代码&#xff0c;能帮我做一个一样的淘宝网站吗&#xff0c;好呀&#xff0c;看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …

SOME/IP 协议详解——信息格式

文章目录 1. 头部格式1.1 消息 ID&#xff08;Message ID&#xff09;1.2 长度&#xff08;Length&#xff09;1.3 请求 ID&#xff08;Request ID&#xff09;1.4 协议版本&#xff08;Protocol Version&#xff09;&#xff1a;1.5 接口版本&#xff08;Interface Version&am…

使用QML实现播放器进度条效果

使用QML实现播放进度效果 QML Slider介绍 直接上DEMO如下&#xff1a; Slider {width: 300;height: 20;orientation: Qt.Vertical; //决定slider是横还是竖 默认是HorizontalstepSize: 0.1;value: 0.2;tickmarksEnabled: true; //显示刻度}效果图如下 那么我先改变滑块跟滚轮…

Android——自定义按钮button

项目中经常高频使用按钮&#xff0c;要求&#xff1a;可设置颜色&#xff0c;有圆角且有按下效果的Button 一、自定义按钮button button的代码为 package com.fslihua.clickeffectimport android.annotation.SuppressLint import android.content.Context import android.gra…

【双指针算法】--复写零(Java版)

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改&a…

联合目标检测与图像分类提升数据不平衡场景下的准确率

联合目标检测与图像分类提升数据不平衡场景下的准确率 在一些数据不平衡的场景下&#xff0c;使用单一的目标检测模型很难达到99%的准确率。为了优化这一问题&#xff0c;适当将其拆解为目标检测模型和图像分类模型的组合&#xff0c;可以更有效地控制最终效果&#xff0c;尤其…

HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化

与传统标准动态范围&#xff08; SDR&#xff09;视频相比&#xff0c;高动态范围&#xff08; HDR&#xff09;视频由于比特深度的增加提供了更加丰富的亮区细节和暗区细节。最新的显示技术通过清晰地再现 HDR 视频内容使得为用户提供身临其境的观看体验成为可能。面对目前日益…

LabVIEW声音信号处理系统

开发了一种基于LabVIEW的声音信号处理系统&#xff0c;通过集成的信号采集与分析一体化解决方案&#xff0c;提升电子信息领域教学与研究的质量。系统利用LabVIEW图形化编程环境和硬件如USB数据采集卡及声音传感器&#xff0c;实现了从声音信号的采集到频谱分析的全过程。 项目…

OpenCL(壹):了解OpenCL模型到编写第一个CL内核程序

目录 1.前言 2.简单了解OpenCL 3.为什么要使用OpenCL 4.OpenCL架构 5.OpenCL中的平台模型(Platform Model) 6.OpenCL中的内存模型(Execution Model) 7.OpenCL中的执行模型(Memory Model) 8.OpenCL中的编程模型(Programmin Model) 9.OpenCL中的同步机制 10.编写第一个OpenCL程序…

Flutter组件————Scaffold

Scaffold Scaffold 是一个基础的可视化界面结构组件&#xff0c;它实现了基本的Material Design布局结构。使用 Scaffold 可以快速地搭建起包含应用栏&#xff08;AppBar&#xff09;、内容区域&#xff08;body&#xff09;、抽屉菜单&#xff08;Drawer&#xff09;、底部导…

【数据结构】数据结构整体大纲

数据结构用来干什么的&#xff1f;很简单&#xff0c;存数据用的。 &#xff08;这篇文章仅介绍数据结构的大纲&#xff0c;详细讲解放在后面的每一个章节中&#xff0c;逐个击破&#xff09; 那为什么不直接使用数组、集合来存储呢 ——> 如果有成千上亿条数据呢&#xff…

搭建Elastic search群集

一、实验环境 二、实验步骤 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎Elasticsearch目录文件&#xff1a; /etc/elasticsearch/elasticsearch.yml#配置文件 /etc/elasticsearch/jvm.options#java虚拟机 /etc/init.d/elasticsearch#服务启动脚本 /e…

链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 场景

在 12 月 4 日&#xff0c;链原生的 Web3 AI 数据网络 Chainbase 正式启动了 Chainbase AVS 主网&#xff0c;同时发布了首批 20 个 AVS 节点运营商名单。Chainbase AVS 是 EigenLayer AVS 中首个以数据智能为应用导向的主网 AVS&#xff0c;其采用四层网络架构&#xff0c;其中…

玩转OCR | 探索腾讯云智能结构化识别新境界

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 玩转OCR 腾讯云智能结构化识别产品介绍服务应用产品特征行业案例总结 腾讯云智能结构化识别 腾讯云智能结构化OCR产品分为基础版与高级版&am…

生信软件开发2 - 使用PyQt5开发一个简易GUI程序

往期文章&#xff1a; 生信软件开发1 - 设计一个简单的Windwos风格的GUI报告软件 1. 使用PyQt5设计一个计算器主程序 要求PyQt5 > 5.6, calculator.py与MainWindow.py处于同一目录&#xff0c;下载mainwindow-weird.ui和mainwindow.ui资源&#xff0c;运行calculator.py即…