我如何使用web3modal获取已连接钱包的地址?

5
我正在使用next.js和web3构建一个应用程序。为了将用户钱包连接到前端,我使用了以下方式的web3modal:
const Home: NextPage = () => {
  const [signer, setSigner] = useState<JsonRpcSigner | null>(null)

  async function connect() {
    const web3Modal = new Web3Modal()
    const connection = await web3Modal.connect()
    const provider = new ethers.providers.Web3Provider(connection)
    const signer = provider.getSigner()

    setSigner(signer)
  }

  return (
    <div className="flex justify-center">
      <button onClick={() => connect()}>Connect wallet</button>
      { signer && (
        <h3>wallet connected: {signer._address}</h3>
      )}
    </div>
  )
}

用户可以成功连接钱包,不幸的是,signer._address一直为空。我想显示给用户刚刚连接的地址,该如何修复?
3个回答

5

0

provider.getSigner() 返回一个 Promise。

你应该使用 await 来获取实际地址。

const signer = provider.getSigner();
const address = await signer.getAddress();
setAddress(address);

0

您可以使用以下方法获取地址

const account=(await provider.listAccounts())[0]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接