最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How do I get the address of the connected wallet with web3modal? - Stack Overflow

programmeradmin8浏览0评论

I'm building an application with next.js and web3. To connect the user wallet to the front-end I'm using web3modal as following:

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>
  )
}

The user can successfully connect the wallet, unfortunately signer._address is always null. I'd like to display to the user with address has just been connected, how can I fix this?

I'm building an application with next.js and web3. To connect the user wallet to the front-end I'm using web3modal as following:

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>
  )
}

The user can successfully connect the wallet, unfortunately signer._address is always null. I'd like to display to the user with address has just been connected, how can I fix this?

Share Improve this question edited May 17, 2022 at 20:28 TylerH 21.1k78 gold badges79 silver badges114 bronze badges asked Dec 1, 2021 at 23:59 steste 3,2695 gold badges44 silver badges78 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 5

This is not a question about web3Modal, but a question about ethers.

You can get the address like this:

const [address, setAddress] = useState()
// ...
setAddress(await signer.getAddress())

The documentation is here: https://docs.ethers.io/v5/api/signer/#Signer-getaddress

provider.getSigner() returns a promise.

You should use await to get the actual address

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

you can get the address using the following

const account=(await provider.listAccounts())[0]
发布评论

评论列表(0)

  1. 暂无评论