跳到主要內容

入門指南

本指南將引導您完成將 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 hook 來管理連接狀態。

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 || '發生未知錯誤。';
};

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

  const handleSuccess = async ({ spaceGateway: gateway }: { spaceGateway: DIDSpaceGateway }) => {
    try {
      console.log('成功連接到 DID Space:', gateway);
      setSpaceGateway(gateway);
      Toast.success('成功連接到 DID Space!');
    } catch (error) {
      console.error(error);
      Toast.error(formatError(error));
    }
  };

  const handleError = (error: Error) => {
    console.error('連接失敗:', error);
    Toast.error(formatError(error));
  };

  const handleDisconnect = () => {
    setSpaceGateway(null);
    Toast.info('已從 DID Space 中斷連線。');
  };

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

運作原理

  1. 狀態管理

    我們使用 useState<DIDSpaceGateway | null>(null) 來追蹤已連接的 DID Space。初始值為 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 連接流程。要探索更進階的功能和自訂選項,請繼續閱讀詳細的元件文件。