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,jquery滚动/跳转页面到指定位置的实现思路
Jun 03 Javascript
JavaScript中的函数(二)
Dec 23 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
May 16 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
Aug 07 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
js实现div色块拖动录制
Jan 16 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 Javascript
关于JavaScript轮播图的实现
Nov 20 Javascript
JavaScript模拟实现网易云轮播效果
Apr 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
一个数据采集类
2007/02/14 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Python中为什么要用self探讨
2015/04/14 Python
Python 探针的实现原理
2016/04/23 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
学用政策心得体会
2014/09/10 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
python通过新建环境安装tfx的问题
2022/05/20 Python