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 相关文章推荐
正则表达式语法
Oct 09 Javascript
用脚本调用样式的几种方法
Dec 09 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
jquery特效 幻灯片效果示例代码
Jul 16 Javascript
图片Slider 带左右按钮的js示例
Aug 30 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
Jul 02 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
axios对请求各种异常情况处理的封装方法
Sep 25 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
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
第八节 访问方式 [8]
2006/10/09 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python 实时遍历日志文件
2016/04/12 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
pygame实现飞机大战
2020/03/11 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
python 连续不等式语法糖实例
2020/04/15 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
家长会演讲稿范文
2014/01/10 职场文书
医院工作检讨书范文
2014/02/10 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
妇女工作先进事迹
2014/08/17 职场文书
好的促销活动方案
2014/08/21 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书