@kodex-react/ctx-ethers
Version:
Provides a React context provider for the Ethers.js library, which allows you to interact with Ethereum smart contracts.
85 lines (59 loc) • 2.15 kB
Markdown
# @kodex-react/ctx-ethers
The `@kodex-react/ctx-ethers` package provides a React context provider for the Ethers.js library, which allows you to interact with Ethereum smart contracts.
## Installation
To install `@kodex-react/ctx-ethers`, use `npm` or `yarn`:
```shell
npm install @kodex-react/ctx-ethers
# or
yarn add @kodex-react/ctx-ethers
```
## Usage
To use the EthersProvider in your app, wrap your application with it in your top-level component:
```tsx
import { EthersProvider } from '@kodex-react/ctx-ethers'
const App: React.FC = ({ children }) => {
return <EthersProvider>
{children}
</EthersProvider>
}
export default App
```
By wrapping your app with the `EthersProvider`, the context will be available to all child components of your app.
## Accessing Ethers Context
Once you have wrapped your app with `EthersProvider`, you can access the context by importing the `useEthers` hook from `@kodex-react/ctx-ethers`:
```tsx
import { useEthers } from '@kodex-react/ctx-ethers'
const MyComponent: React.FC = () => {
const { provider } = useEthers()
// use the ethers object to interact with Ethereum
// ...
}
```
`useEthers` returns an object with an `provider` property, which is an instance of the ethers library. This object can be used to interact with Ethereum and smart contracts.
## Example
Here's an example of how to use `@kodex-react/ctx-ethers` to interact with a smart contract:
```tsx
import { useEthers } from '@kodex-react/ctx-ethers'
import { useState } from 'react'
import MyContract from './MyContract.json'
const MyComponent: React.FC = () => {
const { provider } = useEthers();
const [result, setResult] = useState<number | undefined>(undefined);
const handleButtonClick = async () => {
if (!ethers) return
const contract = new ethers.Contract(
'0x1234567890123456789012345678901234567890',
MyContract.abi,
provider.getSigner(),
)
const result = await contract.myFunction()
setResult(result)
}
return (
<div>
<button onClick={handleButtonClick}>Call MyContract</button>
<div>Result: {result}</div>
</div>
)
}
```