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