【发布时间】:2021-12-26 14:55:43
【问题描述】:
所以我有一个带有 nextjs 的 react 应用程序,当用户使用 Phantom 钱包扩展程序并切换帐户时,我需要在其中获取事件触发器。我在他们的文档上找不到任何相关内容:https://docs.phantom.app/
我想知道是否有人遇到过这个问题。基本上我有 window.solana 对象,但它没有触发用户何时切换帐户
【问题讨论】:
所以我有一个带有 nextjs 的 react 应用程序,当用户使用 Phantom 钱包扩展程序并切换帐户时,我需要在其中获取事件触发器。我在他们的文档上找不到任何相关内容:https://docs.phantom.app/
我想知道是否有人遇到过这个问题。基本上我有 window.solana 对象,但它没有触发用户何时切换帐户
【问题讨论】:
因此 Phantom 本身不会在其 window.solana 对象上公开任何帐户切换特定 API。
不过,您可以采取一些技巧来找出帐户何时切换。
您可以连续轮询当前连接的帐户并将 publicKey 设置为某个变量。当 publicKey 改变时,你可以触发你的事件。
示例伪代码:
let currentKey = '';
poll(() => {
if (/* wallet available and connected */) {
await /* Action that updates publicKey */
if (currentKey !== wallet.publicKey.toBase58()) {
currentKey = wallet.publicKey.toBase58();
this.publicKey = wallet.publicKey;
this.emit('change')
}
}
})
您可以找到我们目前在钱包适配器上查看此流程的文章和 PR here
【讨论】: