vue3---Composition API-- reactive

reactive介绍

作用: 定义多个数据的响应式

const proxy = reactive(obj): 接收一个普通对象然后返回该普通对象的响应式代理器对象

响应式转换是“深层的”:会影响对象内部所有嵌套的属性
内部基于 ES6 的 Proxy
实现,通过代理对象操作源对象内部数据都是响应式的

<template>
  <h2>组合式API reactive的使用</h2>
  <h4>姓名:{{user.name}}</h4>
  <h4>年龄:{{user.age}}</h4>
    <h4>媳妇:{{user.wife}}</h4>

  <button @click="upDate">更新数据</button>
</template>

<script lang="ts">
import {defineComponent, reactive,ref} from 'vue'
export default defineComponent({
  name:'reactive',
  //需求,显示用户的相关信息,点击按钮,可以更新用户的相关信息数据
  setup(){

    const obj={
      name:'汪汪汪',
      age:23,
      wife:{
        name:'咚咚咚',
        age:24,
        cars:['小电驴1','小电驴2','小电驴3']
      }
    }

    //把数据变成响应式数据
    //返回的是一个Proxy的代理对象,被代理的目标对象就是obj对象
    //user现在是代理对象,obj是目标对象
    //user的对象类型是Proxy对象
  //user对象是代理对象, obj对象是目标对象
  //修改是 需要使用user.属性进行修改  修改obj的话页面不更新,但是数据已经被修改
    const user = reactive(obj)
//****主要使用ref代理的时候 需要使用user.value.name获取name属性,使用reactive代理时使用user.name获取name属性
    function upDate(){
      user.name += '++'
      user.age +=2
      user.wife.cars[0] ='特斯拉'
    }

    return{
      user,
      upDate
    }
  }
})
</script>

<style>

</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容