wagmi 插件的使用 类似web3

2 篇文章 1 订阅
2 篇文章 1 订阅

1.简单的获取

1.import { useChainId, useConfig } from "wagmi";


export default function Page() {
        const config = useConfig();
        const chainId  = useChainId();  
  

  const test =async()=>{

let blockNumber = await config.publicClient.getBlockNumber(); //区块高度
let block = await config.publicClient.getBlock({
    blockNumber: blockNumber // 配置1
    blockTag:'latest'.  //。  配置2
  }).  
   block.timestamp   //区块时间戳

} 



}


2.新版
import { useReadContract } from 'wagmi';
import { readContract } from 'wagmi/actions';
import { config } from 'config/wagmi';

  const { data: pools,refetch } = useReadContract({ ...Farm, functionName: 'pools' });

let res = await readContract(config, {
          ...Farm,
          functionName: 'poolInfoOf',
          args: [pools[index]]
        });

2.获取事件记录

1.
import { parseAbiItem } from "viem";
const config = useConfig();

const NewPool = useContract({ contractName: "NewPool" });
const block = await config.publicClient.getBlockNumber();


const logs = await config.publicClient.getLogs({
                        address: contractAddress, 
                        event: parseAbiItem('event Transfer(address indexed from,address indexed to,uint256 amount,)'),
                        args: {
                            user: address
                        },
                        fromBlock: BigInt(fromBlock)
                    });



2.新版
import { useClient, useConfig, usePublicClient, useReadContract, useWaitForTransactionReceipt } from 'wagmi';
  const PublicClient = usePublicClient()
const block = await PublicClient.getBlockNumber();
    const logs = await PublicClient.getLogs({
      address:SystemDao.address,
      event: parseAbiItem('event ContractCreatorAdded(address indexed from,address indexed to)'),
      fromBlock: BigInt(block)
    });
    console.log(logs)
  }

3.contract 读取数据

import {readContract } from "wagmi/actions";
import { getContract } from "viem";



const contract = getContract({
            abi: TokenContract.abi,
            address: TokenContract.address as `0x${string}`,
        });

//获取余额
let balance = await readContract({
            ...contract,
            functionName: "balanceOf",
            args: [address]
        })

4.contract 发交易

1.
import { prepareWriteContract, readContract, writeContract, } from "wagmi/actions";
import { getContract } from "viem";

import { formatEther, parseEther } from "@ethersproject/units";


const [hash, setHahs] = useState<`0x${string}`>();
const { status: transactionStatus } = useWaitForTransaction({
        hash: hash,
    });

useEffect(() => {

        if (transactionStatusSwap == "success") {
            messageWay('发送成功', 'success');
            setHahs(undefiend);
            
        }

    }, [transactionStatus])

const approve = async () => {

        const contract = getContract({
            abi: TokenContract.abi,
            address: TokenContract.address as `0x${string}`,
        });
        let val = parseEther('100000').toString();
        const config = await prepareWriteContract({
            ...contract,
            functionName: "approve",
            args: [SwapRouter.address, val],
        });
        setLoading(true);

        await writeContract(config).then((res: any) => {
            console.log('发送成功');
        }).catch((err: any) => {
            setLoading(false)
        })

    }
2.新版
import { writeContract } from 'wagmi/actions';
import { config } from 'config/wagmi';
import Farm from 'constants/contracts/Farm';
import { useWaitForTransactionReceipt } from 'wagmi';



const [hash, setHash] = useState<`0x${string}`>()
  const { status } = useWaitForTransactionReceipt({
    hash: hash
  })
  useEffect(() => {
    if (status == 'success') {
      messageWay('添加成功', 'success')
      cancel();
      updateData();
    }
  }, [status])


const submit =()=>{

   writeContract(config, {
      ...Farm,
      functionName: 'addPool',
      args: [
        
      ]
    }).then(res => {
      setHash(res)
    }).catch(err => {
      console.log(err);

      })
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值