gpt4 book ai didi

firebase - 为什么我无法在 firebase 'this ' 回调中访问 vuejs 'then'?

转载 作者:行者123 更新时间:2023-12-05 00:13:51 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to access the correct `this` inside a callback

(14 个回答)


3年前关闭。




我正在尝试使用 firebase 向我的 vuejs 应用程序添加身份验证。
注销用户后,应将用户发送回登录页面。我在 HelloWorld.vue 文件的脚本中实现了以下代码:

import firebase from 'firebase'

export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
},
methods: {
logout () {
firebase.auth().signOut().then(function () {
this.$router.push('login')
})
}
}
}

但是我从我的 vuejs 开发工具中得到以下错误:
TypeError: this is undefined
[Learn More]
app.js%20line%201954%20%3E%20eval:40:9
logout/<
HelloWorld.vue:37
Pb/e.a</e.g<
auth.js:23
Yb
auth.js:26
Ub
auth.js:26
h.Qb
auth.js:25
Cb
auth.js:19

在 firebase 回调中引用 this 对象

.$router.push('登录')

我需要帮助弄清楚为什么我不能在回调中访问它以及如何解决这个问题。提前致谢。

最佳答案

您可以使用 arrow function将此修复为 this在另一个函数中时不限于 vue 实例。

methods: {
logout () {
firebase.auth().signOut().then(() => { // arrow syntax
this.$router.push('login')
})
}
}

我个人更喜欢这个,因为它节省了另一个变量声明。

另一种方法是使用 bind(this) :
methods: {
logout () {
firebase.auth().signOut().then(function () {
this.$router.push('login')
}.bind(this)) // bind added.
}
}

关于firebase - 为什么我无法在 firebase 'this ' 回调中访问 vuejs 'then'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48080130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com