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 相关文章推荐
一个用js实现控制台控件的代码
Sep 04 Javascript
一段利用WSH修改和查看IP配置的代码
May 11 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
常用jQuery代码分享
Jul 14 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
ES6入门教程之Class和Module详解
May 17 Javascript
Koa代理Http请求的示例代码
Oct 10 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
解决vue scoped scss 无效的问题
Sep 04 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
简单的分页代码js实现
2016/05/17 Javascript
Javascript的比较汇总
2016/07/25 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python基础教程之Hello World!
2014/08/29 Python
python计算auc指标实例
2017/07/13 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
仓管岗位职责范本
2014/02/08 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
战友聚会策划方案
2014/06/13 职场文书
单位工作证明书格式
2014/10/04 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python