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

はじめに

このガイドでは、DID Spaceの機能をReactアプリケーションに統合するための基本的な手順を説明します。必要なパッケージのインストール方法と、ユーザーがDID Spaceに接続してその詳細を表示できる基本的なコンポーネントの実装方法を学びます。

ステップ1:インストール

まず、@blocklet/did-space-react パッケージをプロジェクトに追加する必要があります。npmまたはお好みのパッケージマネージャーを使用してこれを行うことができます。

Terminal

bash
npm install @blocklet/did-space-react

ステップ2:接続コンポーネントの作成

次に、主要な機能を示す簡単なReactコンポーネントを作成しましょう。この例では、DIDSpaceConnectコンポーネントを使用して接続を確立し、接続後にDIDSpaceConnectionコンポーネントを使用してスペースの情報を表示します。

接続状態を管理するために、ReactのuseStateフックを使用します。

GettingStartedExample.tsx

tsx
import React, { useState } from 'react';
import Toast from '@arcblock/ux/lib/Toast';
import Button from '@mui/material/Button';
import Box from '@mui/material/Box';
import Typography from '@mui/material/Typography';
import { DIDSpaceConnect, DIDSpaceConnection, type DIDSpaceGateway } from '@blocklet/did-space-react';

// エラーをフォーマットするヘルパー関数
const formatError = (error: any): string => {
  return error.message || 'An unknown error occurred.';
};

export default function GettingStartedExample() {
  const [spaceGateway, setSpaceGateway] = useState<DIDSpaceGateway | null>(null);

  const handleSuccess = async ({ spaceGateway: gateway }: { spaceGateway: DIDSpaceGateway }) => {
    try {
      console.log('Successfully connected to DID Space:', gateway);
      setSpaceGateway(gateway);
      Toast.success('Successfully connected to DID Space!');
    } catch (error) {
      console.error(error);
      Toast.error(formatError(error));
    }
  };

  const handleError = (error: Error) => {
    console.error('Connection failed:', error);
    Toast.error(formatError(error));
  };

  const handleDisconnect = () => {
    setSpaceGateway(null);
    Toast.info('Disconnected from DID Space.');
  };

  return (
    <Box sx={{ padding: 2, border: '1px solid #e0e0e0', borderRadius: '8px' }}>
      <Typography variant="h6" gutterBottom>
        DID Space Connection
      </Typography>
      {spaceGateway ? (
        <Box>
          <DIDSpaceConnection endpoint={spaceGateway.endpoint} selected sx={{ marginBottom: 2 }} />
          <Button onClick={handleDisconnect} variant="outlined">
            Disconnect
          </Button>
        </Box>
      ) : (
        <DIDSpaceConnect
          onSuccess={handleSuccess}
          onError={handleError}
          variant="contained"
        />
      )}
    </Box>
  );
}

仕組み

  1. 状態管理

    接続されたDID Spaceを追跡するためにuseState<DIDSpaceGateway | null>(null)を使用します。初期値はnullで、接続がないことを示します。

  2. 接続

    DIDSpaceConnectコンポーネントはボタンをレンダリングします。ユーザーがそれをクリックして正常に接続すると、onSuccessコールバックがトリガーされます。このコールバックは、ユーザーのDID Spaceに関する詳細を含むspaceGatewayオブジェクトを受け取ります。

  3. 状態の更新

    handleSuccess内でsetSpaceGateway(gateway)を呼び出して、接続詳細をコンポーネントの状態に保存します。これにより、コンポーネントが再レンダリングされます。

  4. 情報の表示

    再レンダリング後、spaceGatewayの状態はnullではなくなります。コンポーネントはDIDSpaceConnectionカードを表示し、spaceGatewayオブジェクトからendpointを渡します。このカードはDID Spaceの名前、DID、接続状態を取得して表示します。

  5. 切断

    状態をnullにリセットする「切断」ボタンを追加しました。これによりDIDSpaceConnectボタンが再び表示され、ユーザーは別のスペースに接続できます。

次のステップ

これで、基本的なDID Space接続フローを実装しました。より高度な機能やカスタマイズを探るには、詳細なコンポーネントのドキュメントに進んでください。