EthooksProvider
EthooksProvider is a React Context Provider that provides all the hooks and functions to interact with Ethereum.
It is required to wrap your root component with EthooksProvider so that all the hooks can access the provider.
You should only wrap your root component with EthooksProvider once. If you wrap it multiple times or use more than once, it will cause unexpected behavior, such as different states for hooks.
You should pass any as the chain argument to ethers provider (not the EthooksProvider) to avoid unexpected behaviors when the network changes.
This is not a problem since EthooksProvider will handle the network changes and update the provider and state accordingly.
Usage
In this case, we are using Web3Provider from ethers library.
import {EthooksProvider} from '@incirlabs/react-ethooks';
import {ethers} from 'ethers';
import {useMemo} from 'react';
export default function Main() {
// NOTE: "any" is required as the chain argument to ethers provider.
// https://github.com/ethers-io/ethers.js/issues/866
// Since we are using EthooksProvider to handle network changes, this is not a problem.
const provider = useMemo(() => new ethers.providers.Web3Provider(window.ethereum, 'any'), []);
return (
<EthooksProvider provider={provider} chains={['mainnet', 'goerli']} autoConnect>
<App />
</EthooksProvider>
);
}
Props
provider
The provider is the provider that will be used to interact with Ethereum.
| Type | Default |
|---|---|
| Provider | Required |
chains
The chains is an array of chain names or ChainObject that will be allowed to connect to.
If chains is not provided, it will allow all chains.
| Type | Default |
|---|---|
| Array<Chain> | undefined |
autoConnect
If it is true it will automatically tries to connect to the wallet on mount.
| Type | Default |
|---|---|
| boolean | false |