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 相关文章推荐
JavaScript Event学习第五章 高级事件注册模型
Feb 07 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
Dec 26 Javascript
js面向对象编程之如何实现方法重载
Jul 02 Javascript
JS 使用for循环遍历子节点查找元素
Sep 06 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
Apr 10 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 Javascript
jQuery鼠标悬停内容动画切换效果
Apr 27 jQuery
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
Bootstrap table使用方法汇总
Nov 17 Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
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
星际流派综述
2020/03/04 星际争霸
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
用于table内容排序
2006/07/21 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python微信公众号之关键词自动回复
2018/06/15 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python使用Matlab命令过程解析
2020/06/04 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
《我的第一本书》教学反思
2014/02/15 职场文书
班班通项目实施方案
2014/02/25 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
2015年端午节活动总结
2015/02/11 职场文书
golang正则之命名分组方式
2021/04/25 Golang
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
Spring Boot实现文件上传下载
2022/08/14 Java/Android