在我的react应用程序中,我正在像下面检查web3,但是在chrome上安装metamask后,我至少需要刷新一次页面。
detectAndReadMetaMaskAccount() {
return new Promise((resolve, reject) => {
if (typeof web3 === 'undefined' || typeof web3.currentProvider === 'undefined' || web3.currentProvider.isMetaMask !== true) {
reject({
code: "error.metamask.missing"
});
}
}
以下是我正在执行的步骤:
1.加载我的页面。
2.在chrome上安装metamask。
3.单击提交按钮调用上述功能,但未定义web3。
4.但是在刷新页面后获取web3。
所以我的查询是,何时以及如何准确地将metamask注入web3?有什么方法可以使metamask在不刷新页面的情况下注入web3?
答案 0 :(得分:1)
不幸的是,在安装MetaMask之后没有重新加载页面的情况下,我找不到任何方法来强制web3更新。
作为一种解决方法,我强迫页面焦点更改时重新加载页面:
window.onfocus = () => {
window.location.reload();
}
其背后的原因是,我打开页面以在新选项卡中安装MetaMask扩展,并且用户需要返回到我的选项卡,然后才能继续进行入职流程。