账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Vue 初始化 过程中 ,initInjections为什么在initProvide之前?
    49
    0
    new Vue过程中,init 函数 的初始化顺序是 initLifecycle(vm) initEvents(vm) initRender(vm) initInjections(vm) // resolve injections before data/props initState(vm) initProvide(vm) // resolve provide after data/propsinitInjections initProvide 函数定义 :export function initProvide (vm: Component) { const provide = vm.$options.provide if (provide) { vm._provided = typeof provide === 'function' ? provide.call(vm) : provide }}export function initInjections (vm: Component) { const result = resolveInject(vm.$options.inject, vm) if (result) { toggleObserving(false) Object.keys(result).forEach(key => { /* istanbul ignore else */ if (process.env.NODE_ENV !== 'production') { defineReactive(vm, key, result[key], () => { 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, result[key]) } }) toggleObserving(true) }}initInjections 函数的作用是 :遍历inject的key从父/祖父组件中把provide的值捕捉下来initProvide()就是将当前实例的provide的对象赋值vm._provided这里既然initInjections 是从父/祖父捕捉provide值,为什么不先执行initProvide呢?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 柳花河 普通会员 1楼

      Vue 初始化 过程中,initInjections 在 initProvide 之前,是因为 Vue.js 在初始化组件时,会进行一些自定义的注入操作,这些操作通常会包含初始化组件的各种依赖关系和状态。而 initProvide 是一个全局的注册方法,用于全局注册 Vue 插件。在 Vue 初始化 过程中,初始化组件的依赖关系和状态通常是在 initProvide 方法中完成的,所以 initProvide 方法通常在 initInjections 之前。

      以下是一个简单的 Vue 初始化 示例:

      javascript new Vue({ el: '#app', data: { message: 'Hello, Vue!' }, methods: { initInjections() { // 初始化依赖关系和状态 } } })

      在这个示例中,initInjections 方法会在 Vue 初始化 过程中被调用。这个方法的主要目的是初始化组件的各种依赖关系和状态,以便 Vue 为组件提供完整的初始化功能。

      注意,initInjections 是 Vue.js 自带的一个方法,它通常在 Vue 初始化 过程中被调用。而 initProvide 是 Vue.js 自带的一个全局注册方法,用于全局注册 Vue 插件。在 Vue 初始化 过程中,初始化组件的依赖关系和状态通常是在 initProvide 方法中完成的,所以 initProvide 方法通常在 initInjections 之前。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部