inject和provide源码
- 开源代码
- 2025-08-19 02:24:01

inject和provide的使用方法,点击链接查看
在初始化时,执行了下面
callHook(vm, 'beforeCreate'); initInjections(vm); // resolve injections before data/props initState(vm); initProvide(vm); // resolve provide after data/props callHook(vm, 'created');1.initInjections 函数
function initInjections (vm) { var result = resolveInject(vm.$options.inject, vm); if (result) { Object.keys(result).forEach(function (key) { { defineReactive$$1(vm, key, result[key], function () {警告不允许改}); } }); } }2.resolveInject函数
function resolveInject (inject, vm) { if (inject) { var result = Object.create(null); var keys = Reflect.ownKeys(inject) for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (key === '__ob__') { continue } var provideKey = inject[key].from; var source = vm; while (source) { if (source._provided && hasOwn(source._provided, provideKey)) { result[key] = source._provided[provideKey]; break } source = source.$parent; } if (!source) { if ('default' in inject[key]) { var provideDefault = inject[key].default; result[key] = typeof provideDefault === 'function' ? provideDefault.call(vm) : provideDefault; } else { warn(("Injection \"" + key + "\" not found"), vm); } } } return result } }1.initProvide函数
function initProvide (vm) { var provide = vm.$options.provide; if (provide) { vm._provided = typeof provide === 'function' ? provide.call(vm) : provide; } }inject和provide源码由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“inject和provide源码”
上一篇
Linux知识