虽然 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