Vue3-04-reactive() 响应式失效的三种情况

这篇具有很好参考价值的文章主要介绍了Vue3-04-reactive() 响应式失效的三种情况。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.替换对象后导致失效

简单理解 : 变量指向的对象换了,对原来的对象,当然没有了响应式的效果了。
    // 声明 变量
    let obj1 = reactive({name:"第一个对象"})
    // 改变 变量的指向
    obj1 = reactive({name:"第二个对象的属性"})
    console.log('obj1.name : ',obj1.name)

Vue3-04-reactive() 响应式失效的三种情况,Vue3,javascript,vue3,reactive响应式失效

2.解构之后导致失效

将 reactive() 的对象解构成本地变量之后,
直接操作本地变量,是不会影响 原对象的属性值的。
这个也好理解,可以把解构看作是 定义了一个新的普通变量,
修改普通变量的值,当然是不会对响应式对象造成影响了,它俩根本就不是一个对象。
    // 声明 变量
    const obj2 = reactive({id:1002,name:"第一个对象"})
    // 解构出来 并重新赋值
    let {name,id} = obj2;
    id = 2002;
    name = '本地变量name的值'
    // obj2 不会改变,但是 name 和 id 的值会发生变化
    console.log('obj2 : ',obj2)
    console.log('name : ',name)
    console.log('id : ',id)

Vue3-04-reactive() 响应式失效的三种情况,Vue3,javascript,vue3,reactive响应式失效

3.属性直接作为函数参数导致失效

将 reactice() 对象的属性,单独作为函数参数的时候,
若函数体内对此属性进行了修改,也不会对原属性产生影响。
可以理解为 是一种【值传递】的方式,而非 【引用传递】。

补充 : 
    但是,如果函数的参数是直接把整个的对象传进去的,则该对象让然保持响应式的状态!
    此处可以理解为【引用传递】。

属性作为参数案例

    // 声明 变量
    const obj2 = reactive({id:1002,name:"第一个对象"})

    // 定义一个函数
    const sayHello = (name:string):void => {
        console.log('hello-1 : '+name)
        // 对参数进行修改
        name = '修改后的名称'
        console.log('hello-2 : ',name)
    } 
    // 调用函数 
    sayHello(obj2.name)

  
    // obj2 不会改变,属性值还是原来的值
    console.log('obj2 : ',obj2)

Vue3-04-reactive() 响应式失效的三种情况,Vue3,javascript,vue3,reactive响应式失效

整个对象作为参数


    // 声明 变量
    const obj2 = reactive({id:1002,name:"第一个对象"})

    // 定义一个函数
    const sayObj = (abc:any) =>{
        abc.name = 'aaa'
        console.log('对象属性修改完成')
    }
    
    sayObj(obj2)
   

    // obj2 不会改变,属性值还是原来的值
    console.log('obj2 : ',obj2)

Vue3-04-reactive() 响应式失效的三种情况,Vue3,javascript,vue3,reactive响应式失效文章来源地址https://www.toymoban.com/news/detail-752524.html

到了这里,关于Vue3-04-reactive() 响应式失效的三种情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue3响应式原理#01】Reactivity

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核💪推荐🙌 欢迎各位ITer关注点赞收藏🌸🌸🌸 以下是柏成根据Vue3官方课程整理的响应式书面文档 - 第一节,课程链接在此:Vue 3 Reactivity - Vue 3 Reactivity | Vue Mastery,本文档可作为课程的辅助材料,

    2024年02月08日
    浏览(30)
  • 【Vue3响应式入门#01】Reactivity

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核💪推荐🙌 欢迎各位ITer关注点赞收藏🌸🌸🌸 以下是柏成根据Vue3官方课程整理的响应式书面文档 - 第一节,课程链接在此:Vue 3 Reactivity - Vue 3 Reactivity | Vue Mastery,本文档可作为课程的辅助材料,

    2024年02月08日
    浏览(33)
  • Vue3 reactive丢失响应式问题

    问题描述: 使用 reactive 定义的对象,重新赋值后失去了响应式,改变值视图不会发生变化。 测试代码: 输出结果:   从上述测试代码中,ref 定义的对象有响应式,而 reactive 定义的对象失去了响应式,这是什么原因呢?官网中写到: 如果将一个对象赋值给 ref ,那么这个对

    2024年02月05日
    浏览(31)
  • 前端Vue篇之Vue3响应式:Ref和Reactive

    在Vue3中,响应式编程是非常重要的概念,其中 Ref 和 Reactive 是两个关键的API。 Ref : Ref 用于创建一个响应式的基本数据类型,比如数字、字符串等。它将普通的数据变成响应式数据,可以监听数据的变化。使用 Ref 时,我们可以通过 .value 来访问和修改数据的值。 Reactive :

    2024年04月25日
    浏览(31)
  • vue3 reactive包裹数组无法页面无法响应式

    原代码如下: 此时removeItem方法运行,打印出historyAccount的值确实被改变了,但是页面还是没有变化 原因: 如果你直接通过赋值的方式改变 reactive 对象引用的数组,是不会触发视图的更新的,应该使用 Vue 提供的响应式方法来更新响应式数据。  改进:可以利用splice方法删除

    2024年04月09日
    浏览(32)
  • vue3 ref reactive响应式数据 赋值的问题

    doing 遇见就记录,最后更新时间23.8.30 错误示范:直接赋值 以数组为例,对象也是一样的操作。 ref 定义的属性等价于 reactive({value:xxx}) ,所以 reactive、ref 直接重新赋值丢失响应是因为引用地址变了 正确写法 方法1: ref.value ,代码中更为清晰地表明响应式数据 方法2:包一层

    2024年02月10日
    浏览(36)
  • 【Vue3】使用ref与reactive创建响应式对象

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月21日
    浏览(42)
  • Vue3通透教程【五】Vue3中的响应式数据 reactive函数、ref函数

    专栏介绍: 凉哥作为 Vue 的忠实粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其他

    2024年01月24日
    浏览(33)
  • Vue3中的Ref与Reactive:深入理解响应式编程

    Vue 3是一个功能强大的前端框架,它引入了一些令人兴奋的新特性,其中最引人注目的是 ref 和 reactive 。这两个API是Vue 3中响应式编程的核心,本文将深入探讨它们的用法和差异。 在Vue中,响应式编程是一种使数据与UI保持同步的方式。当数据变化时,UI会自动更新,反之亦然

    2024年02月08日
    浏览(39)
  • 避大坑!Vue3中reactive丢失响应式的问题

    在vue3中,我们定义响应式数据无非是ref和reactive。 但是有的小伙伴会踩雷!导致定义的响应式丢失的问题。 大错特错!!! 大错特错!!! 1.ref 定义数据(包括对象)时,都会变成 RefImpl(Ref 引用对象) 类的实例,无论是修改还是重新赋值都会调用 setter,都会经过 reactive 方法

    2023年04月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包