我在vue中的两个组件之间共享信息。在这一刻,我可以使用箭头函数获取创建的钩子的值但是,我不能将此值用于我声明的其他属性。我读到箭头函数在创建的钩子中不起作用,我想知道如何替换这个箭头函数并获得我需要的值。
data() {
return{
userloged:'',
}
},
created(){
serverBus.$on('validation', (user) =>{
this.userloged = user
console.log("Changed userloged", this.userloged)
console.log("Here is the user", user)
return this.userloged})
},
userloged是我声明的属性。
答案 0 :(得分:0)
请勿在options属性或回调函数上使用箭头功能,例如
created: () => console.log(this.a)
[...]。由于箭头功能绑定到父上下文,因此this
将不会像您期望的那样成为Vue实例,通常会导致诸如Uncaught TypeError: Cannot read property of undefined
之类的错误。
很难看到如何确保在没有访问minimal example that reproduces the issue的情况下删除所有错误,但是用(user) =>
替换function(user)
应该已经删除了主要错误。
答案 1 :(得分:0)
create
回调:created () {...} // good
但不是这样:
created: () => {...} // bad, do not use
因为在第二个示例中,this
已绑定到全局实例,但未绑定到您的Vue实例,所以this.userloged
将不起作用。
serverBus.$on
。因此,这里箭头功能内的this
实际上绑定到serverBus
。您需要做的是在进入箭头功能之前将this
移至that
之类,例如:
created () {
const that = this
serverBus.$on('validation', (user) =>{
that.userloged = user
console.log("Changed userloged", that.userloged)
console.log("Here is the user", user)
return that.userloged
})
}