vue provide / inject 使用介绍

news/2024/7/10 1:31:07 标签: vue

作用:
父子组件跨层级传递数据

优势:
解决了组件层级过多时,数据传递麻烦的问题

主要应用场景:
为高阶插件/组件库提供用例,不推荐在应用程序中使用

缺点:
数据追踪困难,不确定数据注入层,以及数据使用层

使用方法:
provide:
一个对象,或者是一个返回对象的函数。
对象内包含想要传递的内容,即属性和属性值
注意:
子孙层的provide 会覆盖 父辈 provide中相同key的属性值
inject:
字符串数组,或者一个对象。属性值可以为对象,包含from,default属性
from:
可用注入内容中的key值,即 provide 传入对象中的key
default:
默认值,取值不成功时候的备选。

example:
		Vue.component('A', {
			template: `
				<div>
					<B></B>
				</div>
			`,
			provide: {
				msg: 'msg from A',
				ads: 'ads from A'
			}
		})
		
		Vue.component('B', {
			template: `
				<div>
					<C></C>
				</div>
			`,
			provide: {
				// 覆盖父组件A注入的msg内容
				msg: 'msg from B'
			}
		})
		
		Vue.component('B', {
			template: `
				<div>
					<span>{{valueMsg}}</span>
					<span>{{valueAds}}</span>
				</div>
			`,
			inject: {
				valueMsg: {
					from: 'msg',
					default: ''
				},
				valueAds: {
					from: 'ads',
					default: ''
				}
			}
		})
		
		运行结果: 
			msg from B
			ads from A

http://www.niftyadmin.cn/n/1162490.html

相关文章

Vue Typescript 装饰器@Component

vue-property-decorator 在 vue-class-component 上增强更多的结合 Vue 特性的装饰器, 对 Vue 组件进行了一层封装&#xff0c;让 Vue 组件语法在结合了 TypeScript 语法更加贴近面向对象编程.并提供一个工具函数一个装饰器: 语法&#xff1a;Component(options)说明&#xff…

Vue Typescript mixins 混入

首先定义要混淆的类&#xff1a; // FilePath: \hello-typescript\src\mixins\GreetingWords.ts import Vue from vue import Component from vue-class-componentComponent export default class MyMixins extends Vue {// data// 通过混入的方式将属性赋值给其他组件mixinVa…

Vue Typescript data/method/computed的转变

data 以成员变量的形式存在method 以类的函数形式存在computed 使用 get 标识 <!--* Author: your name* Date: 2020-12-02 14:30:50* LastEditTime: 2020-12-02 17:00:58* LastEditors: Please set LastEditors* Description: In User Settings Edit* FilePath: \hello-ty…

Vue Typescript @Watch

语法&#xff1a;Watch(path: string, options: WatchOptions {})参数说明&#xff1a;path: string类型 被侦听的属性名options&#xff1a;类型WatchOptions{}&#xff0c;可以包含两个属性immediate boolean 侦听开始之后是否立即调用该回调函数&#xff1b;deepboolean 被…

Vue Typescript @Model

定制prop和event 用作双向数据绑定 默认情况下, 一个组件上的v-model会:将 value用作 prop将 input用作 event语法&#xff1a; model: {prop?: string, event?: string} <!--* FilePath: \hello-typescript\src\components\Child.vue --> <template><div sty…

Vue Typescript @Prop

语法&#xff1a;Prop(options: (PropOptions | Constructor[] | Constructor) {})参数说明&#xff1a;Prop装饰器接收一个参数&#xff0c;这个参数可以有三种写法&#xff1a;Constructor例如String&#xff0c;Number&#xff0c;Boolean等&#xff0c;指定 prop 的类型&a…

vue + typescript 引入Vant-UI

安装 vant npm install vant --save1. 全局引入在 main.ts 中全局引入import vant/lib/vant-css/index.cssVue.use(Vant)2. 按需引入 两种按需引入方法&#xff0c;都可以实现按照需求引入&#xff0c;推荐第二种第一种&#xff1a;步骤一&#xff1a;在src下定义 plugins 目录…

vue 项目中常用的三种数据存储

vue 项目中常用的三种数据存储 1. Cookies 存储 介绍&#xff1a; 老技术、指定有效期、不能跨域&#xff08;浏览器&#xff0c;网站&#xff0c;路径&#xff09; cookie会跟随http协议发往后台&#xff0c;cookie最好处于服务器环境中使用 只能…