App 1 Icon
imToken: BTC & ETH
下载
App 2 Icon
imToken: BTC & ETH
下载
App 3 Icon
imToken: BTC & ETH
下载

深入解析Hooks在WagmiConfig下的使用技巧与参数详解

大家好!今天咱们探讨了Hooks的使用,发现它需要在WagmiConfig标签的子组件中应用,因此建议将WagmiConfig放置在启动界面中。接下来,我会为大家详细介绍这些Hooks。

useAccount

这个功能非常实用,主要用来获取账户的地址和链接状态。它提供了两个可选的回调函数参数,一个是onConnect,一个是onDisconnect。以开发钱包交互小应用为例,通过onConnect参数,我们能在用户成功连接账户后立即显示连接成功的提示,让用户清楚状态的变化;而onDisconnect参数则能在连接断开时及时通知用户,从而提升用户体验。

image.png

使用时,只需在项目中加入该钩子,然后根据具体需求配置回调函数,账户状态的监控便能轻松完成。

useNetwork

image.png

这个Hook能用来获取当前连接的网络详情。其中,chain代表当前网络的具体信息,而chains则包含了在wagmiConfig中设置的所有链的信息。若要开发一个支持多链的钱包应用,可以直接使用它来获取所有链的信息,进而向用户展示不同链的详情,并允许用户自主选择所需的链。

在测试不同网络时,这个钩子能迅速展示网络现状,开发者可据此迅速作出调整与改进。

{
    address: string //要查询余额的账户地址,必填,要不然返回余额数据为空
    chainId: number //链ID , 不填的话,默认以太坊主网
    token : string  //代币的合约地址,如果不填默认该链的默认代币
    formatUnits :string //格式单位,以太的话有“ETH”、“gwei”、“wei”等
    watch: boolean //是否监测余额变化,并刷新余额
    onError(error):{} 
    onSuccess(data):{}
}

useBalance

这个Hook是用来查询账户余额的。它包含一个可选的参数对象,其中有一个关键参数叫做chainId。在创建wagmiConfig时,需要填写chains数组,只有数组中存在的链,输入对应的chainId才能起作用。举个例子,在开发去中心化金融应用时,若要精确显示用户在不同链上的账户余额,这个参数就显得尤为关键。

通过这个钩子函数的返回结果,开发者可以方便地获得账户的余额信息,确保所展示的数据精确且无误差。

image.png

useBlockNumber

此Hook主要用于获取当前区块编号。使用时需传入一个对象,与useBalance所传对象相似,主要只需传递链ID即可。对于开发需实时监控区块更新的应用来说,尤为实用。例如,在区块链浏览器应用中,通过它获取区块编号,可以迅速更新页面显示,使用户能够看到最新的区块信息。

const blockNumber = useBlockNumber({
    chainId: 1,
  })

根据实际使用场景传对应链ID,就能顺利获取对应链的区块号。

image.png

useConnect 和 useDisconnect

useConnect专门用于钱包连接,与w3m - button组件不同,它不显示钱包选择界面,直接实现连接。它能提供connect方法、connectAsync方法和connectors数组。我们只需调用connect或connectAsync方法,并传入connectors数组中的任意一个参数,即可完成钱包连接。在开发简洁型钱包连接功能时,使用它非常合适。

useDisconnect操作简便,其名即其用,专司切断连接之职。若用户需与钱包断开连接,只需调用此方法即可。

image.png

useSwitchNetwork

这个钩子功能是用于网络切换的。它提供了两个关键输出,一个是chains,它包含了wagmiConfig中配置的所有链路列表,另一个是switchNetwork,这是一个用于切换网络的操作,使用时需提供网络ID。若项目需求是多链支持,通过这个钩子,用户可以方便地在不同链路间进行切换。

import { Layout, Button, Row } from 'antd';
import React from 'react';
import { useAccount, useNetwork, useBalance, useConnect,useDisconnect     } from 'wagmi'
const Test: React.FC = () => {
  const {address, isConnected, isDisconnected} = useAccount()
  const {chain} = useNetwork()
  const {data} = useBalance({address, chainId:chain?.id})
  const {connect, connectors} = useConnect()
  const {disconnect} = useDisconnect()
  return (
    <Layout>
         {isConnected && data ? `地址:${address}  余额:${parseFloat((data["formatted"])).toFixed(4)} ${data["symbol"]}` : ""}
         <Row>
            <Button type="primary" hidden={!isDisconnected} onClick={()=>connect({connector:connectors[2]})}>Connect Wallet</Button>
            <Button type="primary" danger hidden={!isConnected} onClick={()=>disconnect()}>Disconnect</Button>
         </Row>
    </Layout>
  );
};
export default Test;

用户若遇到网络连接不匹配的情况,可使用switchNetwork这一功能,轻松快速地转换至适宜的网络环境。

useToken

这个Hook的功能是获取特定ERC-20代币的相关数据,需注意的是,它并不用于查询代币持有量,而是用来查询代币的名称、发行量等信息。在开发展示加密资产信息的软件时,可以利用这个Hook来获取代币的基本信息,并向用户展示。

 const { chains, switchNetwork } = useSwitchNetwork()

我们只要传入对应的代币信息,就能获取代币的相关数据。

{chains.map((x) => (
          <button
            disabled={!switchNetwork || x.id === chain?.id}
            key={x.id}
            onClick={() => switchNetwork?.(x.id)}
          >
            {x.name}
          </button>
=))}

亲们,关于这些钩子在具体项目中的应用顺序,你们更偏爱哪一个?觉得这篇文章有价值,不妨点个赞,也欢迎转发!

作者头像
token钱包创始人

token钱包

  • tokenim钱包官网下载的一个重要功能在于安全地存储数字资产。它借助密码学技术来防范黑客攻击,比如采用私钥加密等方式,从而能够有效保障用户的资产安全。并且它具备方便快捷的特点,用户随时都可以进行交易操作。
  • 版权声明:本站文章如无特别标注,均为本站原创文章,于2025-02-16,由token钱包发表,共 3127个字。
  • 转载请注明出处:token钱包,如有疑问,请联系我们
  • 本文地址:https://www.shaokaoshebei.cn/mjfqw/1207.html
上一篇:中国应急管理体系的发展历程与应对策略:从部门应对到综合处置
下一篇:深入解析EA交易的优点与缺点:自动化交易策略的全面指南

相关推荐