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 相关文章推荐
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
May 22 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
jQuery实现进度条效果代码
Dec 17 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
vue3修改link标签默认icon无效问题详解
Oct 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
PHP中如何定义和使用常量
2013/02/28 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
python连接池实现示例程序
2013/11/26 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
django 取消csrf限制的实例
2020/03/13 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
python如何实现DES加密
2020/09/21 Python
python 线程的五个状态
2020/09/22 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
上班上网检讨书
2014/01/29 职场文书
民间个人借款协议书
2014/09/30 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
教师师德表现自我评价
2015/03/05 职场文书
培训后的感想
2015/08/07 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
MySQL中order by的使用详情
2021/11/17 MySQL
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python