Ana içeriğe geç

React kiti (@qorechain/react)

@qorechain/react, @qorechain/sdk üzerine kurulu resmi React katmanıdır: tek bir sağlayıcı, bir avuç kanca ve iki yerleştirilebilir bileşen — tek satırlık bir Kuantuma dayanıklı rozeti dahil. Kuantuma dayanıklı bir dApp oluşturmayı varsayılan yol haline getirir.

npm i @qorechain/react @qorechain/sdk react react-dom

react (>=18) bir eş bağımlılıktır; @qorechain/sdk doğrudan bir bağımlılıktır.

Sağlayıcı

Uygulamanızı bir kez QoreChainProvider içine sarın. Her kancanın okuduğu tek bir createClient() örneği artı canlı cüzdan bağlantı durumunu tutar.

import { QoreChainProvider } from "@qorechain/react";

function Root() {
return (
<QoreChainProvider
config={{
network: "testnet",
endpoints: {
rpc: "https://rpc.testnet.example",
rest: "https://rest.testnet.example",
evmRpc: "https://evm.testnet.example",
},
}}
>
<App />
</QoreChainProvider>
);
}

Çalışma zamanında ağ değiştirmek için, sağlayıcıyı farklı bir React key ile yeniden bağlayın. Testler için, config yerine önceden oluşturulmuş (veya taklit edilmiş) bir client prop'u geçin.

Kancalar

KancaDöndürür
useQoreClient()Anlık okumalar için oluşturulmuş QoreChainClient.
useAccount(){ addresses, address, isConnected, status, wallet } — yerel / EVM / SVM adresleri.
useBalance(address?, options?){ data, isLoading, error, refetch }; refreshInterval aracılığıyla otomatik yenileme.
useConnect() / useWallet(){ connect, disconnect, status, isConnecting, error }.
useTx(){ send, sendTokens, status, data, error, isPending, reset }.
usePqcStatus(address?, options?){ data, isRegistered, isLoading, error, refetch }.

Cüzdanları bağlama

useConnect, mevcut SDK adaptörlerini sarar:

const { connect } = useConnect();
await connect({ kind: "keplr" }); // or "leap" | "evm" | "svm"
  • keplr / leapgetCosmosWallet aracılığıyla Cosmos cüzdanları. Zinciri önerir ve etkinleştirir, bir TxClient'a bağlanan bir imzalayan döndürür; böylece useTx hemen imzalayabilir. addresses.native'i ayarlar.
  • evmeth_requestAccounts aracılığıyla herhangi bir enjekte edilmiş EIP-1193 sağlayıcısı (window.ethereum, örn. MetaMask). addresses.evm'i ayarlar.
  • svmconnect() aracılığıyla herhangi bir enjekte edilmiş Wallet-Standard sağlayıcısı (window.solana, örn. Phantom). addresses.svm'i ayarlar.

EVM ve SVM yolları, enjekte edilen sağlayıcının standart istek API'sini doğrudan kullanır; bu nedenle ne viem ne de bir Solana SDK'si dahil edilir. Testler için bir cüzdan enjekte etmek üzere connect seçeneklerinde provider'ı geçin. VM başına tam araçlar için @qorechain/evm / @qorechain/svm ile eşleştirin.

İşlem gönderme

import { msg } from "@qorechain/sdk";
import { useTx } from "@qorechain/react";

function Send() {
const { sendTokens, isPending } = useTx();
return (
<button
disabled={isPending}
onClick={() =>
sendTokens("qor1recipient…", [{ denom: "uqor", amount: "1000000" }])
}
>
Send 1 QOR
</button>
);
}

send([{ typeUrl, value }], opts), bir banka transferinin ötesindeki her şey için msg.* oluşturucularından ham mesajlar alır.

Bileşenler

<ConnectButton/>

Minimal, headless'a yakın bir bağlanma / bağlantı kesme denetimi. Bir seçici sunmak için wallets, temalandırmak için className / style veya tam denetim için bir children render-prop'u geçin:

<ConnectButton wallets={["keplr", "leap", "evm"]} />

<QuantumSafeBadge/>

Adresin kayıtlı bir post-kuantum anahtarı olduğunda (usePqcStatus aracılığıyla) bir Kuantuma dayanıklı göstergesi gösterir; aksi takdirde sönük bir "Kuantuma dayanıklı değil" durumu gösterir. Varsayılan olarak bağlı hesabı kullanır.

<QuantumSafeBadge />
<QuantumSafeBadge address="qor1…" hideWhenUnsafe />

Bir araya getirme

import {
ConnectButton,
QuantumSafeBadge,
useAccount,
useBalance,
} from "@qorechain/react";

function Dashboard() {
const { address, isConnected } = useAccount();
const { data: balance } = useBalance(undefined, { refreshInterval: 10_000 });
return (
<>
<ConnectButton wallets={["keplr", "leap", "evm"]} />
{isConnected && (
<p>
{balance?.amount ?? "…"} {balance?.denom} <QuantumSafeBadge />
</p>
)}
</>
);
}

Altta yatan SDK çağrıları için çalıştırılabilir react-dapp örneğine ve kuantuma dayanıklı kılavuzuna bakın.