メインコンテンツへスキップ

useDid

useDidフックは、session.userオブジェクトから特定のDID関連情報を簡単に抽出して操作するための便利なユーティリティです。手動での処理なしに、永続DID、ウォレット情報、接続済みアカウントなどの一般的に必要なデータを取得するためにユーザーオブジェクトの解析を簡素化します。

useDidフックは、session.userオブジェクトから特定のDID関連情報を簡単に抽出して操作するための便利なユーティリティです。手動での処理なしに、永続DID、ウォレット情報、接続済みアカウントなどの一般的に必要なデータを取得するためにユーザーオブジェクトの解析を簡素化します。

このフックは、セッションコンテキストにアクセスできるように、SessionProviderの子であるコンポーネント内で使用する必要があります。

使用方法

このフックを使用するには、useSessionと一緒にインポートします。useSessionを呼び出して現在のセッション状態を取得し、そのsessionオブジェクトをuseDidに渡します。

Basic Usage

javascript
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 — ログイン成功後にセッションコンテキストによって提供されるユーザーオブジェクト。

戻り値

このフックは、派生したさまざまなDID情報を含む状態オブジェクトを返します。このオブジェクトは、session.userオブジェクトが変更されるたびに更新されます。

  • did string — ユーザーの永続DID。これはpermanentDidのエイリアスです。
  • wallet object — プロバイダーが'wallet'である接続済みアカウントオブジェクト。ウォレットが接続されていない場合はundefinedを返します。
    • did string — ウォレットアカウントのDID。
    • provider string — プロバイダー名。'wallet'になります。
  • walletDid string — ユーザーの接続済みウォレットのDID。ウォレットが接続されていない場合はundefinedを返します。
  • permanentDid string — ユーザーの永続DIDで、user.didからのプライマリ識別子です。
  • connectedDids string[] — ユーザーの接続済みアカウントのすべてのDIDを含む配列。
  • connectedAccounts object[] — 接続済みアカウントオブジェクトの完全な配列。
    • did string — 接続済みアカウントのDID。
    • provider string — アカウントのプロバイダー(例:'wallet'、'github')。
  • sourceProvider string — ユーザーが最初にログインに使用したプロバイダー(例:'wallet'、'github')。デフォルトは'wallet'です。
  • sourceProviders string[] — ユーザーの接続済みアカウントのすべてのプロバイダー名の配列。

スタンドアロンのヘルパー関数

useDidフックは、エクスポートされた一連のヘルパー関数に基づいて構築されています。フックのリアクティブな状態管理が不要で、単にユーザーオブジェクトから特定の情報を抽出したい場合は、これらの関数を直接インポートして使用できます。

FunctionDescription
getPermanentDid(user)ユーザーオブジェクトから永続DIDを抽出します。
getWalletDid(user)接続済みウォレットのDIDを抽出します。
getConnectedAccounts(user)接続済みアカウントの配列を取得します。
getConnectedDids(user)すべての接続済みアカウントからDIDの配列を取得します。
getSourceProvider(user)初回ログインに使用されたプロバイダーを取得します。
getSourceProviders(user)接続されているすべてのプロバイダー名の配列を取得します。
getWallet(user)完全なウォレットアカウントオブジェクトを検索して返します。

例:ヘルパー関数の使用

Direct Function Usage

javascript
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);
  }
}