【发布时间】:2020-06-25 17:58:54
【问题描述】:
我在组件的 data() 部分中声明了一个“userid”变量。在mounted() 方法中,我为MetaMask 启动了一个监听器。在 MetaMask 中更改帐户后,将触发此侦听器。但是,监听器中的“userid”(在 data() 中声明)是未定义的。
export default {
name: 'App',
data () {
return {
userid: null
}
},
mounted () {
...
// MetaMask Listener
window.ethereum.on('accountsChanged', function (accounts) {
this.userid = accounts
})
}
我该如何解决这个问题?
【问题讨论】:
-
把数据变成箭头函数,这样你就可以在正确的上下文中使用“this”了。
-
谢谢马丁。但是,我在挂载方法的其他地方使用当前数据函数使用了相同的变量(this.userid)。我只是在监听器中遇到了这个问题,这显然是在之前加载后触发的。
标签: javascript node.js vue.js ethereum metamask