Skip to main content

React

The Strata SDK comes with a suite of useful ReactJS hooks.

Setup

You'll want to set up solana-wallet-adapter, the Strata SDK Provider, and the Strata AccountProvider (an intelligent caching layer on Solana's rpc).

You can also use one of our starter repos!

Next.js Strata Starter

Create React App Strata Starter

First, setup Solana wallet adapters:

import { WalletAdapterNetwork } from "@solana/wallet-adapter-base";
import {
ConnectionProvider,
WalletProvider,
} from "@solana/wallet-adapter-react";
import {
LedgerWalletAdapter,
PhantomWalletAdapter,
SlopeWalletAdapter,
SolflareWalletAdapter,
SolletExtensionWalletAdapter,
SolletWalletAdapter,
TorusWalletAdapter,
} from "@solana/wallet-adapter-wallets";
import { clusterApiUrl } from "@solana/web3.js";
import React, { FC, useMemo } from "react";

// Default styles that can be overridden by your app
require("@solana/wallet-adapter-react-ui/styles.css");

export const Wallet: FC = ({ children }) => {
// Can be set to 'devnet', 'testnet', or 'mainnet-beta'
const network = WalletAdapterNetwork.Devnet;

// You can also provide a custom RPC endpoint
const endpoint = useMemo(() => clusterApiUrl(network), [network]);

// @solana/wallet-adapter-wallets includes all the adapters but supports tree shaking --
// Only the wallets you configure here will be compiled into your application
const wallets = useMemo(
() => [
new PhantomWalletAdapter(),
new SlopeWalletAdapter(),
new SolflareWalletAdapter(),
new TorusWalletAdapter(),
new LedgerWalletAdapter(),
new SolletWalletAdapter({ network }),
new SolletExtensionWalletAdapter({ network }),
],
[network]
);

return (
<ConnectionProvider endpoint={endpoint}>
<WalletProvider wallets={wallets} autoConnect>
{children}
</WalletProvider>
</ConnectionProvider>
);
};

Then, setup Strata:

import { StrataProviders } from "@strata-foundation/react";
import { Wallet } from "./Wallet";

export const App: FC = ({ children }) => (
<Wallet>
<StrataProviders>{children}</StrataProviders>
</Wallet>
);

Displaying a Social Token

Let's create a simple social token for testing, then display it:

Loading...

Now display it in React! We can use an advanced, pre-canned trade form:

import { Swap, StrataProviders } from "@strata-foundation/react";
import ReactShadow from "react-shadow/emotion";
import { CSSReset } from "@chakra-ui/react";
Loading...

Or, we can render it ourselves using hooks:

import {
useBondedTokenPrice,
useTokenMetadata,
useTokenRef,
useBondingPricing,
useErrorHandler,
} from "@strata-foundation/react";
import { NATIVE_MINT } from "@solana/spl-token";
Loading...

We can use the token metadata sdk to update the token symbol, name, and image:

Loading...