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 读取和设置文档元素的样式属性
Apr 14 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
使用JavaScript进行表单校验功能
Aug 01 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
JS前后端实现身份证号验证代码解析
Jul 23 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
Aug 27 Javascript
vscode 调试 node.js的方法步骤
Sep 15 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遍历文件夹与子目录的函数代码
2011/09/26 PHP
php class类的用法详细总结
2013/10/17 PHP
php短址转换实现方法
2015/02/25 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
javascript 继承实现方法
2009/08/26 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
Python编程求质数实例代码
2018/01/31 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python 发送json数据操作实例分析
2019/10/15 Python
Python ATM功能实现代码实例
2020/03/19 Python
openCV提取图像中的矩形区域
2020/07/21 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
委托协议书范本
2014/04/22 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
干部外出学习心得体会
2016/01/18 职场文书
交通安全学习心得体会
2016/01/18 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python