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!
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...