useDidフックは、session.userオブジェクトから特定のDID関連情報を簡単に抽出して操作するための便利なユーティリティです。手動での処理なしに、永続DID、ウォレット情報、接続済みアカウントなどの一般的に必要なデータを取得するためにユーザーオブジェクトの解析を簡素化します。
このフックは、セッションコンテキストにアクセスできるように、SessionProviderの子であるコンポーネント内で使用する必要があります。
使用方法
このフックを使用するには、useSessionと一緒にインポートします。useSessionを呼び出して現在のセッション状態を取得し、そのsessionオブジェクトをuseDidに渡します。
Basic Usage
import { useSession } from '@arcblock/did-connect-react';
import { useDid } from '@arcblock/did-connect-react/lib/User';
function UserProfile() {
const { session } = useSession();
const {
did,
walletDid,
connectedDids,
sourceProvider,
connectedAccounts,
} = useDid({ session });
if (!session.user) {
return <p>DID情報を表示するにはログインしてください。</p>;
}
return (
<div>
<h2>ユーザーDID情報</h2>
<p><strong>永続DID:</strong> {did}</p>
<p><strong>ウォレットDID:</strong> {walletDid || 'N/A'}</p>
<p><strong>ログイン方法:</strong> {sourceProvider}</p>
<h3>接続済みアカウント ({connectedAccounts.length})</h3>
<ul>
{connectedAccounts.map((account) => (
<li key={account.did}>
{account.provider}: {account.did}
</li>
))}
</ul>
</div>
);
}パラメータ
useDidフックは、単一のオブジェクトをパラメータとして受け取ります。
- options
object(required)- session
object(required) —useSessionフックから取得したセッションオブジェクト。このフックはsession.userが存在する場合にのみデータを計算します。- user
object— ログイン成功後にセッションコンテキストによって提供されるユーザーオブジェクト。
- user
- session
戻り値
このフックは、派生したさまざまなDID情報を含む状態オブジェクトを返します。このオブジェクトは、session.userオブジェクトが変更されるたびに更新されます。
- did
string— ユーザーの永続DID。これはpermanentDidのエイリアスです。 - wallet
object— プロバイダーが'wallet'である接続済みアカウントオブジェクト。ウォレットが接続されていない場合はundefinedを返します。- did
string— ウォレットアカウントのDID。 - provider
string— プロバイダー名。'wallet'になります。
- did
- walletDid
string— ユーザーの接続済みウォレットのDID。ウォレットが接続されていない場合はundefinedを返します。 - permanentDid
string— ユーザーの永続DIDで、user.didからのプライマリ識別子です。 - connectedDids
string[]— ユーザーの接続済みアカウントのすべてのDIDを含む配列。 - connectedAccounts
object[]— 接続済みアカウントオブジェクトの完全な配列。- did
string— 接続済みアカウントのDID。 - provider
string— アカウントのプロバイダー(例:'wallet'、'github')。
- did
- sourceProvider
string— ユーザーが最初にログインに使用したプロバイダー(例:'wallet'、'github')。デフォルトは'wallet'です。 - sourceProviders
string[]— ユーザーの接続済みアカウントのすべてのプロバイダー名の配列。
スタンドアロンのヘルパー関数
useDidフックは、エクスポートされた一連のヘルパー関数に基づいて構築されています。フックのリアクティブな状態管理が不要で、単にユーザーオブジェクトから特定の情報を抽出したい場合は、これらの関数を直接インポートして使用できます。
| Function | Description |
|---|---|
getPermanentDid(user) | ユーザーオブジェクトから永続DIDを抽出します。 |
getWalletDid(user) | 接続済みウォレットのDIDを抽出します。 |
getConnectedAccounts(user) | 接続済みアカウントの配列を取得します。 |
getConnectedDids(user) | すべての接続済みアカウントからDIDの配列を取得します。 |
getSourceProvider(user) | 初回ログインに使用されたプロバイダーを取得します。 |
getSourceProviders(user) | 接続されているすべてのプロバイダー名の配列を取得します。 |
getWallet(user) | 完全なウォレットアカウントオブジェクトを検索して返します。 |
例:ヘルパー関数の使用
Direct Function Usage
import { getWalletDid } from '@arcblock/did-connect-react/lib/User/use-did';
import { useSession } from '@arcblock/did-connect-react';
// このアプローチは、イベントハンドラーやその他の非React関数内で役立ちます
function handleUserAction() {
const { session } = useSession();
if (session.user) {
const walletDid = getWalletDid(session.user);
console.log('ユーザーのウォレットDID:', walletDid);
}
}