React Holochain Hook
Provides React apps with easy access to Holochain using the useHolochain()
hook.
Encapsulates hc-web-client in a React Context, provides sensible connection status information, some automation and a few convenience functions. ♓️ 🦄🌈
Installation
Install it with yarn:
yarn add react-holochain-hook
Or with npm:
npm i react-holochain-hook --save
Usage
Setting up
const Connected = { const hc = if hcstatus === CONNECTION_STATUSCONNECTED return <div>✅ Connected</div> return null} { return <div className="App"> <ProvideHolochain options= url: 'ws://localhost:10003' > <Connected /> </ProvideHolochain> </div> ;}
Talk to Holochain, display data in React component
const CronutCounting = { const hc = const cronutCount setCronutCount = return <div>cronutCount cronuts counted 🍩🍩</div>}
API
ProvideHolochain
Encapsulates hc-web-client using a React Context, making holochain connection available throughout the application.
Auto connects to Holochain when application starts.
process.env.NODE_ENV === 'development'
):
In development (- Attempt connection at
ws://localhost:3401
. - Override port number by setting
process.env.REACT_APP_WSPORT
- Manually set url by providing
options
prop.
In production
- Attempt to fetch connection settings from conductor at the auto generated
/_dna_connections.json
- Manually set url by providing
options
prop.
Props:
options
{Object}: (OPTIONAL) Client options that are also forwarded tohc-web-client
andrpc-websockets
.url
{String}: Websocket url to access Holochain.timeout
{Number}: Connection timeout in milliseconds. Defaults to5000
.wsClient
{Object}: Client options that are also forwarded tows
.autoconnect
{Boolean}: Client autoconnect upon Client class instantiation. Defaults totrue
.reconnect
{Boolean}: Whether client should reconnect automatically once the connection is down. Defaults totrue
.reconnect_interval
{Number}: Time between adjacent reconnects. Defaults to2000
.max_reconnects
{Number}: Maximum number of times the client should try to reconnect. Defaults to5
.0
means unlimited.
useHolochain
Gives access to holochain connection, connection status, etc.
Returns object containing:
options
{Object}: Options for current connection (READ ONLY)connect
{Function}: Connect manually to Holochain using the same options as described forProvideHolochain
. Use only whenstatus
isNOT_CONNECTED
orCONNECT_FAILED
.connection
{Any}: Exposes the underlyinghc-web-client
connection object with thecall
, andcallZome
functions. See hc-web-client for details.status
{Number}: Connection status using the values specified byCONNECTION_STATUS
setMeta(key, value)
{Function}: Convenience funtion to save connection related metadata during the lifespan of the connection.meta
{Object}: Metadata object in the form of key/value pairs.
export const CONNECTION_STATUS = {
NOT_CONNECTED: 0,
CONNECTING: 1,
CONNECTED: 2,
ATTEMPTING_RECONNECT: 3,
CONNECT_FAILED: 4
}
Contributing
Yes, please do! Raise an issue or post a pull request. Let's make working with Holochain a breeze!
TODO
- Add TypeScript types
License
AGPL-3.0