useContract
Hook for connecting to a smart contract.
import { useContract } from "@thirdweb-dev/react";
Usage
Provide your smart contract address as the first parameter. The second parameter is contract type; which is strongly recommended if your contract is a prebuilt contract, but not required.
Once connected, contract
will be an instance of your smart contract.
The ABI is resolved automatically from our on-chain registry.
import { useContract } from "@thirdweb-dev/react";
function App() {
const { contract, isLoading, error } = useContract("{{contract_address}}");
}
Import Smart Contracts
If your smart contract was not deployed using thirdweb, you’ll need to import it on the dashboard.
Demo
function App() {const { contract, isLoading, error } = useContract("0x083cc9b849E1A8CfEb6736654BF7ac5a98f81a6");if (isLoading) {return <div>Loading...</div>;}if (error || !contract) {return <div>Error: {error.message}</div>;}return (<div><h1>Contract</h1><p>Connected to contract:</p><pre>{contract.getAddress()}</pre></div>);}
Configuration
Contract Type (optional)
If your contract is a prebuilt contract, it is strongly recommended you provide the contract's name to gain access to improved top-level functions and type inference.
View available contract types
- NFT Drop:
"nft-drop"
- Signature Drop:
"signature-drop"
- Edition Drop:
"edition-drop"
- NFT Collection:
"nft-collection"
- Edition:
"edition"
- Multiwrap:
"multiwrap"
- Pack:
"pack"
- Token Drop:
"token-drop"
- Token:
"token"
- Marketplace:
"marketplace"
|"marketplace-v3"
- Split:
"split"
- Vote:
"vote"
const { contract, isLoading, error } = useContract(
"{{contract_address}}",
"contract-type",
);