跳到主要内容

快速入门

本指南将引导您完成将 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 || '发生未知错误。';
};

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 回调。此回调会接收一个 spaceGateway 对象,其中包含有关用户 DID Space 的详细信息。

  3. 更新状态

    在 handleSuccess 内部,我们调用 setSpaceGateway(gateway) 将连接详细信息存储到我们组件的状态中。这会导致组件重新渲染。

  4. 显示信息

    重新渲染后,spaceGateway 状态不再是 null。组件现在会显示 DIDSpaceConnection 卡片,并传入我们 spaceGateway 对象中的 endpoint。该卡片会获取并显示 DID Space 的名称、DID 和连接状态。

  5. 断开连接

    我们添加了一个“断开连接”按钮,它会将状态重置为 null,从而重新显示 DIDSpaceConnect 按钮,允许用户连接到另一个空间。

后续步骤

您现在已经实现了一个基本的 DID Space 连接流程。要探索更高级的功能和自定义选项,请继续阅读详细的组件文档。