Vue中的provide/inject机制

更新日期: 2019-05-22阅读: 2.8k标签: 机制

定义说明:这对选项是一起使用的。以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

通俗的说就是:组件得引入层次过多,我们的子孙组件想要获取祖先组件得资源,那么怎么办呢,总不能一直取父级往上吧,而且这样代码结构容易混乱。这个就是这对选项要干的事情。

provide:是一个对象,或者是一个返回对象的函数。里面呢就包含要给子孙后代的东西,也就是属性和属性值。
inject:一个字符串数组,或者是一个对象。属性值可以是一个对象,包含from和default默认值。


主要看一下响应式数据、非响应式数据的区别 :

<!DOCTYPE html>
<html lang="zh">
	<body>
		<div id="app">
			<h1>
				{{PROJECT_NAME}}
				<br />
				{{appName}}
				<br />
				{{appVersson}}
			</h1>
			<parent />
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.6/dist/vue.js"></script>
	<script>
		const child = {
			inject: ['appName', 'PROJECT_NAME'],
			template: `<div style="color:red;">
			{{PROJECT_NAME}}
			<br />
			{{appName}} 【在parent组件,修改了分发内容】
			</div>`,
		};
		const parent = {
			inject: ['appName', 'appVersson', 'PROJECT_NAME'],
			// 更改分发内容
			provide() {
				return {
					appName: this.appName + '-from-parent',
				};
			},
			components: {
				child,
			},
			template: `<div style="color:blue;">
			{{PROJECT_NAME}}
			<br />
			{{appName}}
			<br />
			{{appVersson}} 【不是响应式的,上级传递的computed】
			<br/>
			<br/>
			<child/>
			</div>`,
		};
		const PROJECT_NAME = '哇哈哈的项目';
		const app = new Vue({
			el: '#app',
			components: {
				parent,
			},
			provide() {
				console.log(this);
				return {
					// 普通数据(无响应式)
					PROJECT_NAME2: PROJECT_NAME,
					PROJECT_NAME: this.PROJECT_NAME,
					// 响应式数据
					appName: this.appName, // 使用data中的数据
					appVersson: this.appVersson, // 使用computed中的数据,可以倒是可以,但不是响应式的。。
				};
			},
			data() {
				this.PROJECT_NAME = PROJECT_NAME;
				return {
					appName: 'app',
					now: Date.now(),
				};
			},
			computed: {
				appVersson() {
					return this.now;
				},
			},
			created() {
				setInterval(() => this.now = Date.now(), 1000);
			},
		});
	</script>
</html>



链接: https://fly63.com/article/detial/3403

浅析前端页面渲染机制

作为一个前端开发,最常见的运行环境应该是浏览器吧,为了更好的通过浏览器把优秀的产品带给用户,也为了更好的发展自己的前端职业之路,有必要了解从我们在浏览器地址栏输入网址到看到页面这期间浏览器是如何进行工作的

这一次,彻底弄懂 JavaScript 执行机制

javascript是一门单线程语言,Event Loop是javascript的执行机制.牢牢把握两个基本点,以认真学习javascript为中心,早日实现成为前端高手的伟大梦想!

创建js hook钩子_js中的钩子机制与实现

钩子机制也叫hook机制,或者你可以把它理解成一种匹配机制,就是我们在代码中设置一些钩子,然后程序执行时自动去匹配这些钩子;这样做的好处就是提高了程序的执行效率,减少了if else 的使用同事优化代码结构

小程序的更新机制_如何实现强制更新?

在讲小程序的更新机制之前,我们需要先了解小程序的2种启动模式,分别为:冷启动和热启动。小程序不同的启动方式,对应的更新情况不不一样的。无论冷启动,还是热启动。小程序都不会马上更新的,如果我们需要强制更新,需要如何实现呢?

基于JWT的Token认证机制实现及安全问题

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。其JWT的组成:一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。

web前端-JavaScript的运行机制

本文介绍JavaScript运行机制,JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。

轮询机制解决后端任务回调问题

现在有一个需求,前端有一个按钮,点击以后会调用后端一个接口,这个接口会根据用户的筛选条件去hadoop上跑任务,将图片的base64转为img然后打包成zip,生成一个下载连接返回给前端,弹出下载框。hadoop上的这个任务耗时比较久

JavaScript预解释是一种毫无节操的机制

js代码执行之前,浏览器首先会默认的把所有带var和function的进行提前的声明或者定义:1.理解声明和定义、2.对于带var和function关键字的在预解释的时候操作不一样的、3.预解释只发生在当前的作用域下

js对代码解析机制

脚本执行js引擎都做了什么呢?1.语法分析 2.预编译 3.解释执行。在执行代码前,还有两个步骤;语法分析很简单,就是引擎检查你的代码有没有什么低级的语法错误 ,查找全局变量声明(包括隐式全局变量声明,省略var声明),变量名作全局对象的属性,值为undefined

web认证机制

以前对认证这方面的认识一直不太深刻,不清楚为什么需要token这种认证,为什么不简单使用session存储用户登录信息等。最近读了几篇大牛的博客才对认证机制方面有了进一步了解。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!