当前位置: 首页 > news >正文

Vue2的依赖注入(跨级通信)基本使用

provide(提供) ,inject(注入)  祖先级组件用provide传递数据,它的所有后代都可以通过inject取到数据

使用演示:

//祖先组件
<template><div>父组件传的值:{{num}}
</div>
</template><script>
//导入子组件
import Son from '@/component/Son'
export default{data(){return{num:10}},//祖先级组件把要传递的数据放入provide里
provide(){  return{num:this.num},
}
}
</script>

 

//儿子组件
<template><div>子组件接收传来的值:{{num}}</div>
</template><script>
//导入孙子级别组件
import Grandson from '@/component/Grandson'export default{//后代组件可以通过inject拿到数据inject:['num']
}
</script>
//孙子组件
<template><div>孙子组件接收传来的值:{{num}}</div>
</template><script>export default{//后代组件可以通过inject拿到数据inject:['num']}
</script>

但是依赖注入的数据默认不是响应式的,祖先级别组件修改数据,其他使用到这个数据的组件不会同步

我点击按钮使祖先组件的num值+1,只有祖先组件的num值变了

使依赖注入的数据成为响应式的:

 第一种方法(把要传的数据放在对象里):
<template><div>父组件传的值:{{ obj.num }} <br /><Son></Son><button @click="addNum">+1</button></div>
</template>//再祖先组件里把要穿的数据放在一个对象里
export default{data(){return{obj:{num:10   }      }},provide(){return{//把这个对象传过去obj:this.obj}},methods: {addNum () {this.obj.num++}
}
<template><div>{{obj.num}}</div>
<//template>//孙子组件
export default{inject:['obj']
}
此时再祖先组件里修改num数据,所有使用到这个数据的组件都会同步

 第二种方法,传递一个参数用方法返回

//祖先组件
export default{data(){return{age:6}},provide(){return{age(): => this.age}}
}
<template><div>{{age()}}</div>
</template>//孙子组件
export default{inject:['age']
}


http://www.mrgr.cn/news/53119.html

相关文章:

  • ST表 C++
  • LSL常见应用场景及示例<三>
  • pip3安装报error: externally-managed-environment,删除EXTERNALLY-MANAGED即可
  • 成语积累学习
  • PHP-laravel框架
  • 苍穹外卖学习笔记(二十六)
  • Null-text Inversion for Editing Real Images using Guided Diffusion Models
  • AI 自学 Lesson2 - 回归(Regression)
  • Doctype? 严格模式 、混杂模式?
  • 微信小程序用开发工具在本地真机调试可以正常访问摄像头,发布了授权后却无法访问摄像头,解决方案
  • 【热门】智慧果园管理系统解决方案
  • 如何高效规划千人大会?数字化会议管理的实战经验分享!建议收藏!
  • Python 工具库每日推荐【Jinja2 】
  • canvas鼠标点击特效
  • 软考中级科目怎么选?软考中级证书有什么用?
  • 八小时筹百万美金!智能指环届的黑马
  • 近屿智能荣登2024 CHINA AIGC 100榜单,助力AI产业高质量发展
  • 基于51单片机的数字电容表(程序+Protues仿真+报告)
  • 无人机载30倍三光跟踪吊舱-千里眼航空
  • LeetCode:3191. 使二进制数组全部等于 1 的 最小次数(贪心 java)