vue.js 源代码学习笔记 ----- instance inject
/* @flow */import { hasSymbol } from 'core/util/env' import { warn } from '../util/index' import { defineReactive } from '../observer/index'export function initProvide (vm: Component) {const provide = vm.$options.provideif (provide) { // 计算proved结果vm._provided = typeof provide === 'function'? provide.call(vm): provide} }export function initInjections (vm: Component) {const inject: any = vm.$options.injectif (inject) {// inject is :any because flow is not smart enough to figure out cached// isArray here // 注入 可以任何类型 是因为fow不过智能, 计算出被缓存的数组const isArray = Array.isArray(inject) //如果是对象, 取出属性值const keys = isArray? inject: hasSymbol? Reflect.ownKeys(inject): Object.keys(inject)for (let i = 0; i < keys.length; i++) {const key = keys[i]const provideKey = isArray ? key : inject[key]let source = vmwhile (source) {if (source._provided && provideKey in source._provided) {/* istanbul ignore else */if (process.env.NODE_ENV !== 'production') { //添加这个vm的inject属性监控defineReactive(vm, key, source._provided[provideKey], () => { //避免直接监控一个属性, 因为当重新渲染的时候, 这个监控会被改变 warn(`Avoid mutating an injected value directly since the changes will be ` +`overwritten whenever the provided component re-renders. ` +`injection being mutated: "${key}"`,vm)})} else {defineReactive(vm, key, source._provided[provideKey])}break}source = source.$parent}}} }
这个方法应该是给vm的inject属性添加监控.
转载于:https://www.cnblogs.com/dhsz/p/7116409.html
vue.js 源代码学习笔记 ----- instance inject相关推荐
- vue.js 源代码学习笔记 ----- 工具方法 lang
/* @flow */ // Object.freeze 使得这个对象不能增加属性, 修改属性, 这样就保证了这个对象在任何时候都是空的 export const emptyObject = Obje ...
- vue.js 源代码学习笔记 ----- decoder
/* @flow */let decoderexport function decode (html: string): string {decoder = decoder || document.c ...
- Vue.js教程学习笔记
官方视频简易教程:https://learning.dcloud.io/ 1. 安装与部署 第一阶段(初学)可以通过在html文件中引入脚本来完成安装 <script src="vue ...
- 唐金州的Vue开发实战学习笔记(基础篇)
Vue开发实战学习笔记 简易的Vue程序 组件 事件 插槽 单文件组件 双向绑定 虚拟DOM与key属性 组件更新 状态data与属性props vue的响应式更新 计算属性和侦听器 计算属性 com ...
- 唐金州的Vue开发实战学习笔记(生态篇)
Vue开发实战学习笔记 Vuex Why Vuex How Vuex Vuex的核心概念和底层原理 Vuex的最佳实践 Vue Router Why Vue Router 路由类型及底层原理 Nuxt ...
- JS逆向学习笔记 - 持续更新中
JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...
- Vue.js 框架基础笔记
Vue.js 框架基础笔记 1. Vue.js 基本概念 1.1 遇见 Vue.js 1.1.1 为什么要学习 Vue.js 1.1.2 前端开发的复杂化 1.1.3 Vue.js 特点 1.1.4 ...
- Vue数据代理+事件处理+事件修饰符的作用+计算属性的使用,尚硅谷Vue系列教程学习笔记(2)
尚硅谷Vue系列教程学习笔记(2) 参考课程:<尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通> 参考链接:https://www.bilibili.com/video/ ...
- js/jquery学习笔记
javascript简介 JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言. 不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说Ja ...
- eos 源代码学习笔记一
文章目录 eos 源代码学习笔记 1.eos 中的常见合约类型 2.语言环境局部( locale )变量的使用简介(目的是通过 gettext 软件包 来实现软件的全球化) 3.eos 源代码的一些优 ...
最新文章
- CSS中关于清除浮动的问题
- 这个“大脑”收获一份大奖!
- [UOJ386]鸽子固定器
- 数字信号处理(第四版)pdf
- php换行替换,php怎么替换回车换行
- Mob研究院 · BAT数据洞察报告
- PCIE数据采集软件使用
- 语音邮件 voice mail 概述
- 【科普小知识】KMS 是什么?
- 「数据结构」普林斯顿算法课第二周作业
- 十只老鼠和一千瓶毒药的故事
- c语言 自锁按键,具有自锁功能的按键结构的制作方法
- 2018沈阳网络赛J
- 对学生创业的重新认识
- 2016-12-26 菜鸟上路(4)——VS中关于MFC界面设计
- 求刷Kindle Fire HD的方法
- geetest极验验证码使用
- 如何解决全局工业相机飞拍拖影问题
- 分享Spark MLlib训练的广告点击率预测模型
- jquery php 抽奖,jquery-rotate.js制作红包大放送抽奖效果