vue中的inject用法及说明

 更新时间:2022年08月25日 08:40:34   作者:斜影梧桐  
这篇文章主要介绍了vue中的inject用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue inject用法

作用:刷新vue组件

使用方法:

在APP.vue中

 provide(){
            return {
                reload:this.reload
            }
        },
methods:{
            reload(){
                this.isRouterAlive = false
                this.$nextTick(function(){
                    this.isRouterAlive = true
                })
            }
        }

子组件中使用:

inject: ['reload'],

引入后直接this.reload()即可

使用prvide inject的超级的一个大坑

组件化开发是必不可少的,可是也会伴随着很多头疼的事,有时候组件嵌套太深会让页面传值太麻烦,这时候vuex因此诞生,但是有时候我们不想用vuex,有没有其他更简单的方法呢?是 provide inject  官方提供的这两个api 首先我们不考虑其他因素,专门看看 这两个单词是什么意思 provide(提供) inject(注入)

专门从字面意思就应该知道了 应该是父组件用provide 子组件用inject

使用的方法也很简单

import {ref,reactive, provide} from 'vue'

在父组件引入这个 api provide

然后想穿什么值

provide('data',message)

data值得是props名字 告诉子组件 你要接收就用用data message是你要传入的数据

子组件接收

const injectaa = inject('data')

不需要引入inject 就能收到值了

很好,你们以为这就完了吗?下面讲的是一个超级大坑

就是如果传入的是一个异步数据 这个api就会让人头疼起来

因为这两个api属于同步的所以执行起来

他是先在父组件直接provide 然后子组件Inject 执行

导致出现 null

解决的办法

 const message = ref([])
 console.log('1先执行')
 
 provide('message',message)
 
 function getGood(){
 
 apiGood.getGoodId(id).then(res=>{
   
 message.value = res.data
 
 console.log
 })

 要传入的数据为

const message = ref([])

这样才能传过去

但是又出现新的问题

我们已经看到值了 但是进一步打印会发现

 是个空的,是不是很奇怪 直接打印Inject就能出来值,inject.value就出不了

其实这些值都是存在虚拟DOM的所以只能看还没加载过来,所以只能观看而不可亵玩焉

你想要打印这些值只能让console.log变为一个异步

让那些值传过来在执行

如是

 值就出来了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vite配置@别名以及让vscode智能提示路经的步骤

    vite配置@别名以及让vscode智能提示路经的步骤

    这篇文章主要给大家介绍了关于vite配置@别名以及让vscode智能提示路经的步骤,文中通过代码示例以及图文介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • 详解Vue 2中的  initState 状态初始化

    详解Vue 2中的  initState 状态初始化

    这篇文章主要介绍了详解Vue 2中的initState状态初始化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Vuex中mutations与actions的区别详解

    Vuex中mutations与actions的区别详解

    下面小编就为大家分享一篇Vuex中mutations与actions的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue3 学习笔记之axios的使用变化总结

    vue3 学习笔记之axios的使用变化总结

    本篇文章主要旨在帮助正在学vue3或者准备学vue3的同学了解网络请求axios该如何使用,防止接触了一点点vue3的同学会有个疑问。有兴趣的小伙伴可以关注一下
    2021-11-11
  • 封装一个更易用的Dialog组件过程详解

    封装一个更易用的Dialog组件过程详解

    这篇文章主要为大家介绍了封装一个更易用的Dialog组件过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 在vue组件中使用axios的方法

    在vue组件中使用axios的方法

    下面小编就为大家分享一篇在vue组件中使用axios的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue el-form一行里面放置多个el-form-item的实现

    vue el-form一行里面放置多个el-form-item的实现

    本文主要介绍了vue el-form一行里面放置多个el-form-item的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Vue + SpringBoot 实现文件的断点上传、秒传存储到Minio的操作方法

    Vue + SpringBoot 实现文件的断点上传、秒传存储到Minio的操作方法

    这篇文章主要介绍了Vue + SpringBoot 实现文件的断点上传、秒传存储到Minio的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-06-06
  • 浅谈vue中慎用style的scoped属性

    浅谈vue中慎用style的scoped属性

    本篇文章主要介绍了浅谈vue中慎用style的scoped属性,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • vue如何封装自己的Svg图标组件库(svg-sprite-loader)

    vue如何封装自己的Svg图标组件库(svg-sprite-loader)

    这篇文章主要介绍了vue如何封装自己的Svg图标组件库(svg-sprite-loader),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论