Metamask允許使用者更改網路並從副檔名中更改其活動錢包地址。
不幸的是,DApps不知道使用者什麼時候更改了帳戶,而沒有專門檢查它。這意味著,如果使用者在使用您的DApp時更改了帳戶,則會向他們顯示與上一個帳戶相關的過期資訊。
幸運的是,Metamask現在允許您透過簡單的程式碼實時偵聽使用者實時更改其帳戶的情況。
檢測帳戶更改
假設有一個名為getAccount()的函式連線到以太坊並載入正在使用的活動帳戶。每當載入DApp時都會發生一次操作。
Metamask在帳戶選擇更改時觸發accountsChanged事件,我們可以監聽該事件。程式碼如下:
async function getAccount() {
const accounts = await ethereum.enable();
const account = accounts[0];
// do something with new account here
}
ethereum.on('accountsChanged', function (accounts) {
getAccount();
})
使用此事件偵聽器,您的DApp可以實時獲取最新的錢包資料,使您的使用者體驗更加流暢和最新。圖顯示了一個DApp,該應用程式檢索活動的錢包地址,並在觸發accountChanged事件時將其顯示在按鈕中。