useContractEvents
Hook for reading events emitted by a smart contract, including new events as they are emitted (optional).
import { useContractEvents } from "@thirdweb-dev/react";
const { data, isLoading, error } = useContractEvents(contract);
Usage
Provide your smart contract instance from useContract hook as the argument.
By default, reads all events emitted by the smart contract.
import { useContractEvents, useContract } from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
function App() {
const { contract } = useContract(contractAddress);
const { data, isLoading, error } = useContractEvents(contract);
}
Configuration
eventName
eventName (optional)
The name of the event to query for. For example, if your smart contract emits an event called MyEvent, you would pass "MyEvent" to this parameter.
Omit this parameter or provide undefined to query for all events emitted by the smart contract.
import { useContractEvents, useContract } from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
function App() {
const { contract } = useContract(contractAddress);
const { data, isLoading, error } = useContractEvents(
contract,
"MyEvent", // Event name being emitted by your smart contract
);
}
options
options (optional)
An object containing options to filter the events being queried.
Available options include queryFilter to refine which events you want to read, and a boolean subscribe flag to subscribe to new events as they are emitted.
import {
useContractEvents,
useContract,
Web3Button,
} from "@thirdweb-dev/react";
// Your smart contract address
const contractAddress = "{{contract_address}}";
function App() {
const { contract } = useContract(contractAddress);
const { data, isLoading, error } = useContractEvents(
contract,
"MyEvent",
{
queryFilter: {
filters: {
tokenId: 123, // e.g. Only events where tokenId = 123
},
fromBlock: 0, // Events starting from this block
toBlock: 100, // Events up to this block
order: "asc", // Order of events ("asc" or "desc")
},
subscribe: true, // Subscribe to new events
},
);
Return Value
Return Value
The hook's data property, once loaded, contains an array of event objects, each containing the following properties:
{
eventName: string;
data: Record<string, any>;
transaction: {
blockNumber: number;
blockHash: string;
transactionIndex: number;
removed: boolean;
address: string;
data: string;
topics: Array<string>;
transactionHash: string;
logIndex: number;
}
}