虽然 ref()接收的数据也可以是对象类型,但最好用来接收基本类型。

<template>
  <h1>我是App组件</h1>
  <h2>姓名:{{name}}</h2>
  <h2>年龄:{{age}}</h2>
  <h2>工作种类:{{job.type}}</h2>
  <h2>工作薪水:{{job.salary}}</h2>
  <button @click="changeInfo">修改人的信息</button>
</template>

<script>

import { ref } from 'vue'
// ref函数生成的是一个RefImpl引用对象;  RefImpl(reference 引用;  implement 实现 )
export default {
  name: 'App',
  setup() {
    /*
     * ref接收的数据可以是:基本类型,也可以是对象类型  
     * ref函数的作用:定义一个响应式的数据
     *
     * 语法: const xxx = ref(initValue)
     *      ·创建一个包含响应式数据的引用对象(reference对象,简称ref对象
     *      ·JS操作数据:xxx.value
     *      ·模板中读取数据:不需要.value,直接<div>{{xxx}}</div>)
     *
     * RefImpl中:
     *    基本数据类型实现双向绑定,是通过Object.defineProperty()的getter setter完成的
     *    对象类型的数据,内部求助了vue3.0中的一个新函数 --- reative函数;
     *        补充:ref在接收对象类型时,从根儿上来讲,是使用了ES6中的proxy方法,
     *             但是在vue3中,没有直接写这段代码,而是把proxy的操作封装到了reactive函数
     *             中,即,reactive这个函数里面写了具体对proxy的实现
    */
    let name = ref('张三')
    let age = ref(18)
    let job = ref({
      type: '前端',
      salary: '30k'
    })

    function changeInfo() {
        name.value = '李四'
        age.value = 48
        console.log(job.value);
        job.value.type = '前端开发大牛'
        job.value.salary = '60k'
    }

    // 返回一个对象(常用)
    return {
      name,
      age,
      job,
      changeInfo
    }
  },
}
</script>

来源:
作者:元気杀手
链接:https://blog.csdn.net/qq_43835345/article/details/125377709