Vue ref,reactive 响应式引用

// ref , reactive 响应式引用
// 原理,通过proxy 对数据进行封装,当数据变化时,触发模版等内容的更新
// ref 处理基础类型的数据
// reactive 处理非基础类型数据 如:数组,对象等

javascript 复制代码
<script>
// ref , reactive 响应式引用
// 原理,通过proxy 对数据进行封装,当数据变化时,触发模版等内容的更新
// ref 处理基础类型的数据
// reactive 处理非基础类型数据 如:数组,对象等

方法一:简单使用 ref,监听属性变化

方法二:简单使用 reactive 监听对象变化

// setup 
    // 创建 vue实例
   const app = Vue.createApp({
    
     // ref 时,使用name如: {{name}}
    // reactive 时,使用name如: {{nameObj.name}}
    template:  `
    <div >
        {{nameObj.name}}
    </div>
   `,

        // created 实例被完全初始化之前
        // 可以直接使用
        setup(props, context) {
            // 不能在里面用 this关键词
            // 不能调用外部函数
            // 方法一: 使用 ref
            /*
            const {ref} = Vue;
            // proxy, 'dell' 变成 proxy({value: 'lee'})这样的一个响应式引用
                let name = ref('dell');
                setTimeout(() => {
                    name.value = 'lee'
                }, 2000)
                return {
                    name
                }
                */
            // 方法二:  使用 reactive
            // proxy, {name: 'dell'} 变成 proxy({name: 'lee'})这样的一个响应式引用
            const {reactive} = Vue;
            const nameObj = reactive({name: 'dell'});
            setTimeout(() => {
                    nameObj.name = 'lee'
                }, 2000)
                return {
                    nameObj
                }
        }

    });

    const vm = app.mount('#root');
    
</script>

如果想

javascript 复制代码
<script>
// ref , reactive 响应式引用
// 原理,通过proxy 对数据进行封装,当数据变化时,触发模版等内容的更新
// ref 处理基础类型的数据
// reactive 处理非基础类型数据 如:数组,对象等

// setup 
    // 创建 vue实例
   const app = Vue.createApp({
    // ref 时,使用name如: {{name}}
    // reactive 时,使用name如: {{nameObj.name}}
    template:  `
    <div >
        {{nameObj.name}}
    </div>
   `,

   // created 实例被完全初始化之前
   // 可以直接使用
        setup(props, context) {
            // 不能在里面用 this关键词
            // 不能调用外部函数
            // 方法一:
            /*
            const {ref} = Vue;
            // proxy, 'dell' 变成 proxy({value: 'lee'})这样的一个响应式引用
                let name = ref('dell');
                setTimeout(() => {
                    name.value = 'lee'
                }, 2000)
                return {
                    name
                }
                */
            // 方法二:
            // proxy, {name: 'dell'} 变成 proxy({name: 'lee'})这样的一个响应式引用
            //    const {reactive} = Vue;
            //    const nameObj = reactive({name: 'dell'});
            //    setTimeout(() => {
            //         nameObj.name = 'lee'
            //     }, 2000)
            //     return {
            //         nameObj
            //     }

            // 方法三:
            // proxy, {name: 'dell'} 变成 proxy({name: 'lee'})这样的一个响应式引用
            // 对响应式 只读属性
            //    const {reactive, readonly} = Vue;
            //    const nameObj = reactive({name: 'dell'});
            //    // 只读属性
            //    const copyNameObj = readonly(nameObj);
            //    setTimeout(() => {
            //         nameObj.name = 'lee'
            //         copyNameObj.name = 'lei'
            //     }, 2000)
            //     return {
            //         nameObj,
            //         copyNameObj
            //     }

                // 方法四:
                // 注意 toRefs
                const {reactive, readonly, toRefs} = Vue;
            const nameObj = reactive({name: 'dell', age: 28});
            

            // toRefs proxy({name:'dell', age: 28}), { name: proxy({value: 'dell'}) , age: proxy({value: 28})}
            setTimeout(() => {
                    nameObj.name = 'lee'
                }, 2000)
                return {
                    nameObj,
                }
        }
    });

    const vm = app.mount('#root');
    
</script>
相关推荐
期待のcode1 分钟前
前后端分离项目 Springboot+vue 在云服务器上的部署
服务器·vue.js·spring boot
xkxnq1 分钟前
第一阶段:Vue 基础入门(第 15天)
前端·javascript·vue.js
北辰alk4 分钟前
Vue 过滤器:优雅处理数据的艺术
vue.js
anyup1 小时前
2026第一站:分享我在高德大赛现场学到的技术、产品与心得
前端·架构·harmonyos
BBBBBAAAAAi2 小时前
Claude Code安装记录
开发语言·前端·javascript
xiaolyuh1232 小时前
【XXL-JOB】 GLUE模式 底层实现原理
java·开发语言·前端·python·xxl-job
源码获取_wx:Fegn08952 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
毕设十刻2 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
anyup2 小时前
从赛场到产品:分享我在高德大赛现场学到的技术、产品与心得
前端·harmonyos·产品
QQ19632884752 小时前
ssm基于Springboot+的球鞋销售商城网站vue
vue.js·spring boot·后端