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 相关文章推荐
jQuery之$(document).ready()使用介绍
Apr 05 Javascript
Eval and new funciton not the same thing
Dec 27 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
Jan 16 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
jQuery与JS加载事件用法分析
Sep 04 Javascript
JavaScript常用正则函数用法示例
Jan 23 Javascript
javascript算法之二叉搜索树的示例代码
Sep 12 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
Oct 22 Javascript
p5.js绘制创意自画像
Nov 04 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 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
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
js获取class的所有元素
2013/03/28 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
跟老齐学Python之做一个小游戏
2014/09/28 Python
Python中的多重装饰器
2015/04/11 Python
python更新列表的方法
2015/07/28 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
详解python3实现的web端json通信协议
2016/12/29 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Pycharm Git 设置方法
2020/09/15 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
车间操作工岗位职责
2013/12/19 职场文书
项目建议书模板
2014/05/12 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书