vue3 provide和inject底层组件的值不是响应式的处理详解

 更新时间:2023年08月22日 14:26:16   作者:芹丸子  
这篇文章主要为大家介绍了vue3 provide和inject底层组件的值不是响应式的处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前景提示

在学习provide和inject是发现一个问题就是顶层组件使用功provide传递的值在基层组件中使用inject接收后不是响应式的,如下代码所示

//顶层组件代码
 const count = ref(100);
 provide('count-key',count);
 const setCount = ()=>{
     count.value = 99;
 }
 <template>
     <div>{{count}}</div>//99
 </template>
 //底层组件
 const count = inject('count-key');
 const setCount = inject('set-count);
 onMounted(()=>{
     setCount();
 })
 /*子组件的onMounted执行完成之后父组件的onMounted函数才执行完成,所以在子组件中显示的100,但是父组件中显示时已经修改了count的值,所以父组件中显示的99,子组件中显示的100*/
 <template>
     <div>{{count}}</div>//100
 </template>

解决方法

//顶层组件代码
 const count = ref(100);
 provide('count-key',count);
 const setCount = ()=>{
     count.value = 99;
     return {
         countNum:count.value
     }
 }
 provide('set-count',setcount)
 <template>
     <div>{{count}}</div>//99
 </template>
 //底层组件
 const count = inject('count-key');
 const setCount = inject('set-count');
 const countNum = setCount().countNum
 <template>
     <div>{{count}}--{{countNum}}</div>//100--99
 </template>
 在子组件中使用的count的值还是和上面一段代码的解释一样,但是父组件的count和子组件的countNum的值都是重新包装之后才显示所以是响应式改变的

这里感谢 Jyann博主的文章给予的帮助,在这里贴上链接,里面的内容更加的全面,大家有相关问题可以查阅https://www.jb51.net/javascript/2959180fb.htm

以上就是vue3 provide和inject底层组件的值不是响应式的处理详解的详细内容,更多关于vue3 provide inject组件值的资料请关注脚本之家其它相关文章!

相关文章

  • 在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程

    在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程

    这篇文章主要介绍了在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程,需要的朋友可以参考下
    2018-03-03
  • Vue.js报错Failed to resolve filter问题的解决方法

    Vue.js报错Failed to resolve filter问题的解决方法

    这篇文章主要介绍了Vue.js报错Failed to resolve filter问题的解决方法,需要的朋友可以参考下
    2016-05-05
  • vue通过路由实现页面刷新的方法

    vue通过路由实现页面刷新的方法

    本篇文章主要介绍了vue通过路由实现页面刷新的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Vue批量注册组件实现动态组件技巧

    Vue批量注册组件实现动态组件技巧

    Vue 动态组件的应用场景很多,可应用于动态页签,动态路由等场景,其核心原理是批量注册,在Vue2和Vue3中实现原理相同,只是语法略有差异,本文给大家介绍了Vue批量注册组件实现动态组件技巧,需要的朋友可以参考下
    2024-11-11
  • vue脚手架vue-cli的学习使用教程

    vue脚手架vue-cli的学习使用教程

    本篇文章主要介绍了vue脚手架vue-cli的学习使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • vue中实现methods一个方法调用另外一个方法

    vue中实现methods一个方法调用另外一个方法

    下面小编就为大家分享一篇vue中实现methods一个方法调用另外一个方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Vue入门配置、常用指令及Ajax、Axios示例详解

    Vue入门配置、常用指令及Ajax、Axios示例详解

    Vue是一套用于构建用户界面的渐进式JavaScript框架,与其它框架不同的是,Vue被设计为可以自底向上逐层应用,这篇文章主要介绍了Vue入门配置、常用指令及Ajax、Axios的相关资料,需要的朋友可以参考下
    2026-05-05
  • 一文详解vue3 watchEffect监听的各种姿势用法

    一文详解vue3 watchEffect监听的各种姿势用法

    watchEffect 会自动追踪在其回调函数中使用的所有响应式依赖,无需显式指定数据源,本文将为大家总结一下vue3 watchEffect监听的各种用法,有需要的可以了解下
    2026-03-03
  • 一文详解vue项目如何使用mqtt通信

    一文详解vue项目如何使用mqtt通信

    在现代Web开发中,实时通信变得越来越重要,MQTT是一种轻量级的消息传输协议,广泛应用于物联网(IoT)和实时通信场景,这篇文章主要介绍了vue项目如何使用mqtt通信的相关资料,需要的朋友可以参考下
    2026-03-03
  • VUE中watch的详细使用教程(推荐!)

    VUE中watch的详细使用教程(推荐!)

    这篇文章主要给大家介绍了关于VUE中watch的详细使用教程,watch是vue实例的一个属性,主要用来监听数据的变化,并做出一些操作,需要的朋友可以参考下
    2023-08-08

最新评论