美文网首页
向后代组件传值provide 和 inject

向后代组件传值provide 和 inject

作者: 扶光_ | 来源:发表于2022-10-22 17:26 被阅读0次

一,非响应式传值

向子组件传值时,可以使用props。而如果需要向层次更深的后代组件传值时,如果继续使用props,需要逐级一层一层传递,非常的麻烦

父组件使用provide

 data(){
    return{
      num:0
    }
  },
  provide(){
    return{
      num:this.num
    }

而后代组件使用jnject接收

  <div>
我是孙子{{num}}
  </div>
</template>

<script>
export default {
  data () {
    return {
    }
  },
  inject:["num"]

此时我们可以使用一对 provideinject。无论组件层次结构有多深,父组件都可以作为其所有子组件的依赖提供者。这个特性有两个部分:父组件有一个 provide 选项来提供数据,子组件有一个 inject 选项来开始使用这些数据。

但我们在父级添加一个方法,单击的时候数据+1,


非响应式

我们发现通过props父级给子级传值是跟着响应式变化的,而通过provide和inject是不随着响应式变化
如果期望响应式的传值,就要用到setup组合式api
import {provideref,ref,reactive} from "vue"

  • ref 把基础数据处理响应式数据
  • reactive 把对象数据变成一个响应式数据
  • 在父级中
setup(){
    let num = ref(0)//把基础数据处理响应式数据,reactive把对象数据变成一个响应式数据

    //提供给后辈
    provide("num",num)
  },

在子级中

<template>
  <div>
我是孙子{{num}}
  </div>
</template>

<script>
import {inject} from 'vue';
export default {
  data () {
    return {
    }
  },
  setup(){
    let num = inject("num")

    return {
        num
    }
  }
}
</script>

插槽

什么是插槽呢?就是调用子组件标签中中间写的内容

<Sun :a="num">123456</Sun>

那么中间的内容并不会在页面中显示出来,那么去哪里了呢
需要使用<slot></slot>标签能将插槽里面的东西使用出来

那么他用在什么地方呢,就是模板都是一样而内容不一样的地方

<Sun :a="num">123456</Sun>
<Sun :a="num">one two three four</Sun>
<Sun :a="num">一,二,三,四</Sun>
slot

相关文章

  • provide/inject

    provide/inject能够用于实现祖先和后代之间的传值parent 父组件 child 组件 grand 孙...

  • vue provide 和 react provider

    vue provide/inject 作用:祖先组件向其所有子孙后代传值 这对选项需要一起使用,以允许一个祖先组件...

  • vue 传参 和 插槽

    组件传参 1. provide 和 inject 祖先后代传值 2. 兄弟组件传承 //父组件是同一个 3.$Bu...

  • 向后代组件传值provide 和 inject

    一,非响应式传值 向子组件传值时,可以使用props。而如果需要向层次更深的后代组件传值时,如果继续使用props...

  • Vue 3.0 Provide和Inject实现共享数据

    Provide和Inject可以在祖(父)组件和子(孙)组件间实现传值。相比prop只能父子之间传值而言,Prov...

  • Vue 实现刷新当前页面

    provide/inject实现祖先组件向其他子孙组件注入一个值 实例 祖先组件 this.$nextTick(...

  • vue组件传值和函数调用

    1,父组件传值给子组件 vue2.0 vue3.0(provide(提供)/inject(注入)用法) 2,父组件...

  • [vue3新特性] 9.组合api——10.Provide /

    之前我们学习过provide和inject的作用,就是在父级组件中provide数据或者方法,在他的后代组件中只要...

  • vue 依赖注入

    vue中的依赖注入 provide 和 inject provide选项允许我们指定我们想要提供给后代组件的数据/...

  • VUE进阶 - observable

    observable可以用作简单场景的最小跨组件状态存储和provide/inject一样,也可以向其所有子孙后代...

网友评论

      本文标题:向后代组件传值provide 和 inject

      本文链接:https://www.haomeiwen.com/subject/cztbzrtx.html