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压缩工具下载集合
Mar 06 Javascript
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
Javascript验证方法大全
Sep 21 Javascript
jQuery select自动选中功能实现方法分析
Nov 28 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
JS触摸事件、手势事件详解
May 04 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 jQuery
vue axios请求频繁时取消上一次请求的方法
Nov 10 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 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加速网络传输
2006/10/09 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
php获取远程文件内容的函数
2015/11/02 PHP
javascript深入理解js闭包
2010/07/03 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
jquery radio 操作代码
2011/03/16 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
使用Python对Excel进行读写操作
2017/03/30 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
写给女生的道歉信
2014/01/14 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
店铺转让协议书
2014/12/02 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
暂住证明怎么写
2015/06/19 职场文书
导游词之青城山景区
2019/09/27 职场文书