vue父组件给子组件的组件传值provide inject的方法


Posted in Javascript onOctober 23, 2019

一般情况下我们父子之间的传值用的是props,这个就不多说了,但是如果想让父给子组件的组件传值怎么办呢,这里我们就可以用到 provide 和 inject(依赖注入)

provide/inject需要一起使用,我们可以从父组件的provide传值,子组件或者孙组件,就可以用inject来接受子组件的provide属性值

具体的可以看官网介绍provide/inject:https://cn.vuejs.org/v2/api/#provide-inject

下面我们可以写个简单的例子来演示一下

父组件parent,我们在里面引入了一个子组件provideChild

<template>
  <div>
    <button @click="add">点击增加</button>
    <provideChild/>
  </div>
</template>
<script>
import provideChild from '@/components/provideChild'
export default {
  components:{provideChild},
  data () {
    return {
      foo:5
    }
  },
  //依赖注入传值
  provide(){
    return{
      newFoo:this.foo
    }
  },
  methods:{
    add(){
      this.foo ++
    },
  }
}
</script>

子组件provideChild,我们同时又在子组件里面引入了一个他的组件

我们可以看到他的打印出注入的newFoo值5

 

<template>
<section>
  <div>我是子组件:{{newFoo}}</div>
  <childChild/>
</section>
</template>
<script>
import childChild from '@/components/childChild'
export default {
  components:{
    childChild
  },
  inject:['newFoo'],
  mounted(){
    console.log(this.newFoo)
  },
  
}
</script>

孙子组件childChild

<template>
  <div>我是子组件的组件:{{newFoo}}</div>
</template>
<script>
export default {
  inject:['newFoo'],
}
</script>

接下来我们可以看一下页面的

vue父组件给子组件的组件传值provide inject的方法

是可以展示的出来的,但是我们点击增加的时候,子组件们都没有响应,如果此时你有好好看文档的话,就应该猜出为什么了

vue父组件给子组件的组件传值provide inject的方法

provide必须是个对象inject的绑定值才可以响应,那么我们可以试一试

//parent父组件的写法
<template>
  <div>
    <button @click="add">点击增加</button>
    <provideChild/>
  </div>
</template>
<script>
import provideChild from '@/components/provideChild'
export default {
  components:{provideChild},
  data () {
    return {
      fooObj:{
        foo:5
      }
    }
  },
  //依赖注入传值
  provide(){
    return{
      newFoo:this.fooObj
    }
  },
  methods:{
    add(){
      this.fooObj.foo ++
    },
  }
}
</script>

//子组件provideChild
<template>
<section>
  <div>我是子组件:{{newFoo.foo}}</div>
  <childChild/>
</section>
</template>
<script>
import childChild from '@/components/childChild'
export default {
  components:{
    childChild
  },
  inject:['newFoo'],
  mounted(){
    console.log(this.newFoo)
  },
  
}
</script>

//孙子组件childChild
<template>
  <div>我是子组件的组件:{{newFoo.foo}}</div>
</template>
<script>
export default {
  inject:['newFoo'],
}
</script>

这样我们就可以操作父组件的添加方法,得到子孙组件的响应

vue父组件给子组件的组件传值provide inject的方法

以上就是本次介绍的全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
用jQuery中的ajax分页实现代码
Sep 20 Javascript
javascript 基础篇2 数据类型,语句,函数
Mar 14 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
Jun 02 Javascript
jquery datatable服务端分页
Aug 31 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
JavaScript函数基础详解
Feb 03 Javascript
JavaScript中严格判断NaN的方法
Feb 16 Javascript
前端天气插件tpwidget使用方法详解
Jun 24 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 Javascript
vue 导出文件,携带请求头token操作
Sep 10 Javascript
p5.js临摹旋转爱心
Oct 23 #Javascript
JavaScript 作用域scope简单汇总
Oct 23 #Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 #Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 #jQuery
JavaScript提升机制Hoisting详解
Oct 23 #Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 #Javascript
p5.js临摹动态图形的方法
Oct 23 #Javascript
You might like
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php之Memcache学习笔记
2013/06/17 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python sys.argv用法实例
2015/05/28 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Python多进程原理与用法分析
2018/08/21 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Django Form常用功能及代码示例
2020/10/13 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
Python用户自定义异常的实现
2020/12/25 Python
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
写给老婆的检讨书
2014/02/21 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
模特大赛策划方案
2014/05/28 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
打架检讨书
2015/01/27 职场文书
学雷锋日活动总结
2015/02/06 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis