首页 > 其他分享 >Vue3 reactive的理解

Vue3 reactive的理解

时间:2023-03-01 16:36:45浏览次数:46  
标签:对象 h1 reactive job 理解 Vue3 hobby

1.什么是reactive?

  • reactive是Vue3中提供实现响应式数据的方法.
  • 在Vue2中响应式数据是通过defineProperty来实现的.
  • 而在Vue3响应式数据是通过ES6的Proxy来实现的

2.reactive注意点

  • reactive参数必须是对象(json/arr)
  • 如果给reactive传递了其他对象,默认情况下修改对象,界面不会自动更新,如果想更新,可以通过重新赋值的方式.

错误示范

  • 当传递的是非对象时,页面不会发生响应

 

 

正确实例

 

 

arr正确实例

  • 传入数组会转成proxy对象

 

 

Vue3笔记 reactive函数

  • 作用:定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数)
  • 语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)

reactive定义的响应式数据是“深层次的”。

内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作。

1 2 3 4 5 6 7 8 9 10 11 <template>   <img alt="Vue logo" src="./assets/logo.png" />   <h1>一个人的信息</h1>   <h1>年龄:{{ p.age }}</h1>   <h1>姓名:{{ p.name }}</h1>   <h1>工作种类: {{ p.job.type }}</h1>   <h1>工作薪水: {{ p.job.salary }}</h1>   <h1>爱好: {{ hobby }}</h1>   <h1>测试的数据: {{ p.a.b.c }}</h1>   <button @click="changeInfo">修改人的信息</button> </template>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 <script> import HelloWorld from "./components/HelloWorld.vue"; import { ref, reactive } from "vue"; export default {   name: "App",   components: {     HelloWorld,   },   setup() {     let hobby = reactive(["抽烟", "喝酒", "打麻将"]);     // 数据     let p = reactive({       name: "张三",       age: 19,       job: {         type: "前端工程师",         salary: "20k",       },       a: {         b: {           c: 666666,         },       },       hobby: ["抽烟", "喝酒", "打麻将"],     });       // 方法     function changeInfo() {       console.log(p.job);       p.name = "李四";       p.age = 119;       p.job.salary = "69k";       p.job.type = "算法工程师";       p.hobby[0] = "学习";       hobby[0] = "学习算法";     }     return {       p,       hobby,       changeInfo,     };   }, }; </script>

总结一下:

  • reactive主要是用来操作对象或数组,定义为响应式数据
  • 增删改查都可以操作。
  • 内部是通过Proxy代理的形式

标签:对象,h1,reactive,job,理解,Vue3,hobby
From: https://www.cnblogs.com/bisiyuan/p/17168737.html

相关文章

  • 理解线段树这一篇文章就够啦!
    线段树TODO:补充例题线段树的进阶拓展\(Java\)模板封装类前言本文中,若无特殊说明,数列下标均从\(1\)开始由于本人实力有限,线段树更高级的拓展暂不做考虑引入......
  • TCP-三次握手和四次挥手简单理解
    三次握手(three-wayhandshaking)1.背景:TCP位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。2.原理:1)发送端首先发送一个......
  • 怎么生动地理解RESTful
    好久没更新了...摘自ChatGPT的回答怎么生动地理解RESTfulRESTful是一种用于设计和构建网络应用程序的软件架构风格,它的设计理念是基于HTTP协议的,主要包括资源、请求方法......
  • hashmap深入理解
    1.Map:地图* 1.概念:Map:就是用来装键值对集合的容器* 2.作用:* 解决了需要成对出现的这种关系结构* 键(key): 本质就是一个数据 值(value): 本质也是......
  • vue3+ElementPlus 后台布局搭建
    一、https://element-plus.gitee.io/zh-CN/官网  二、后台布局Layui  代码示例如下<template><divclass="app_container"><divclass="common-layo......
  • 如何理解机器学习中的嵌入 (Embedding)
    嵌入(Embedding)是用向量表示一个物体,这里所说的物体可以是人,是实体,是虚拟物品,比如:一个单词、一条语句、一个序列、一件商品、一个动作、一本书、一部电影、一个人等等。......
  • IP+端口的深入理解
    为什么打开浏览器输入的网址前面都会加上一个https或者http呢? 因为这是为了方便!我们通过一个IP地址可以定位到一台服务器,但如何精确到服务器里的某项服务呢?这就需要加上......
  • 使用unplugin-auto-import自动导入插件优化vite开发vue3应用
    为什么要使用unplugin-auto-import插件? 使用vite编写vue3代码时,使用compositionapi函数、VueRouter、pinia状态管理等官方API需要在页面中显式引入。而使用unplug......
  • Apache Drill 理解
    ApacheDrill理解一、RestApi二、遇到问题1.中文编码问题2.升级无法启动问题3.mysqlsql解析执行语法问题4.集群模式下jdbcdriver代替restapi问题三、案例......
  • 理解requestAnimationFrame和cancelAnimationFrame
    window.requestAnimationFrame()方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法使用一个回调函数作为参数,这个回调函数会在......