从vue源码解决问题

主要记录工作中遇到的vue的问题,并通过源码浏览解决问题

使用 provide/inject 不能获取从created 赋值给data中的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import data from "./data"

export default {
data () {
return {
a:'',
};
},

created(){
this.a = 'created里面赋值'
}


provide:function(){

//在provide注入
// 结果:this.a 为空
return {a:this.a}
}

vue参阅源码可知

1
2
3
4
5
6
7
8
9
10
// expose real self
vm._self = vm
initLifecycle(vm)
initEvents(vm)
initRender(vm)
callHook(vm, 'beforeCreate')
initInjections(vm) // 在初始化data之前初始化注入injec的配置
initState(vm) // 初始化data
initProvide(vm) // 在初始化data之后初始化provide配置
callHook(vm, 'created') //触发created 钩子函数

provide是在created之前进行初始化的,所以在provide运行是,created里面的赋值并没有生效