了解 Web3UI 工具包的基础知识,以及如何快速构建设计良好、易于访问的用户界面!
web3 生态系统优先考虑基于区块链的项目的后端开发,而对前端技术栈几乎没有贡献。
前端是应用程序的图形用户界面 (UI) 的开发。它描述了用户如何在浏览器上呈现和交互数据;基本上应用程序的一般执行方式。
在本文中,我们将讨论第一个 web3 前端库Web3UI Kit ,我们还将使用它和 Moralis React SDK 构建一个 dApp 仪表板。[1]
本文是基于项目的,在继续本教程之前,您应该具备以下条件:
我们将构建一个 dApp 仪表板,显示主网、Kovan、Rinkeby、Goerli 和 Ropsten 测试网上连接用户的所有 NFT 和余额。
完成本教程后,您将了解如何使用 Web3UI Kit 组件设置和构建 web3 前端。
在下面查看我们的 dApp 仪表板如何运行的基本流程:
用户连接钱包的登录页面
连接的用户可以访问 Web3 dApp 仪表板并查看他们的余额
下面是我们将在本教程中构建的 dApp 仪表板的演示视频:
您还可以在此处查看[5]我们正在构建的实时版本。
Moralis Web3UI Kit 是第一个用于开发 dApp 前端的 web3 前端库
Web3UI Kit 是一个开源的、轻量级的、可重用的 web3 UI 组件。它由Moralis[6]团队开发和维护。它类似于 Web2 UI 组件库、Chakra UI[7]和Material UI[8],但功能更多。
Moralis Web3UI Kit 提供了一个易于使用的用户界面组件,可以使您的 dApp 开发更快。
下面是我们将用于构建 web3 仪表板的一些 Web3UI 工具包:
Web3UI
Web3UI
Web3UI
当我们的 dApp 中发生事件或操作时,Web3UIuseNotification()挂钩可用于通过
Web3UI
Web3UI Kit 提供了一个
Web3UI 套件
Web3UI
您可以使用 Web3UI Kit
您可以在此处[9]查看完整的 Web3UI Kit 组件列表。
在本节中,我们将结合上面讨论过的所有 Web3UI Kit 组件来构建我们的 web3 仪表板。
在本节中,我们将结合上面讨论过的所有 Web3UI Kit 组件来构建我们的 web3 仪表板。
运行以下命令以使用 yarn 和Create React App[10] (CRA)创建React应用程序:[11]
yarn create react-app my-web3-dashboard使用以下命令导航到新创建的文件夹:
cd my-web3-dashboard接下来,运行以下命令安装Moralis React SDK[12]和Web3UI Kit[13]:
yarn add moralis react-moralis web3uikit使用以下命令启动您的 React 服务器:
yarn start设置 Moralis 服务器并安装 Moralis SDK(见此处)后,下一步是通过 Moralis SDK 在我们的 React 应用程序和 Moralis 服务器之间建立连接。
在项目的根目录下创建一个.env文件并存储 Moralis 服务器详细信息,如下所示:
REACT_APP_SERVER_URL=https://XXXXXX.usemoralis.com:2053/server
REACT_APP_APP_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX用您的 Moralis 凭证替换占位符。接下来,我们需要在更新src/.env文件后重新启动我们的服务器。
使用下面的快捷键停止您的服务器:
ctrl + c使用以下命令再次启动您的服务器:
yarn run start接下来,我们将App.js使用以下代码更新我们的文件:
import { NotificationProvider } from "web3uikit";
import { MoralisProvider } from "react-moralis";
import { Dashboard } from "./component/Dashboard";
function App() {
return (
);
}
export default App;在这一步中,我们将创建连接钱包组件,以便我们可以使用我们的钱包(例如 Metamask)登录仪表板。
在您的src文件夹中:
import React from "react";
import { ConnectButton, Hero } from "web3uikit";
export const ConnectWallet = () => {
return (
);
};在上面的代码中,我们渲染了
这是
现在,用户可以连接他们的任何数字钱包:
在这一步中,我们将构建显示以下内容的仪表板组件:
主网、Kovan、Rinkeby、Goerli 和 Ropsten 测试网上已连接用户的余额
显示已连接用户的钱包地址的切换卡
用于添加和删除任务的待办事项列表
连接用户拥有的 NFT
从您的components文件夹中:
import Moralis from "moralis";
import React, { useEffect } from "react";
import { useMoralis, useMoralisWeb3Api } from "react-moralis";
import {
BannerStrip,
NFTBalance,
ConnectButton,
useNotification,
Widget,
Todo,
Credentials,
Typography,
} from "web3uikit";
import { ConnectWallet } from "./ConnectWallet";
export const Dashboard = () => {
const dispatch = useNotification();
const Web3Api = useMoralisWeb3Api();
const { isAuthenticated, user } = useMoralis();
// Current user's wallet address
const userAddress = user?.get("ethAddress");
// Token balance of the current user
const [mainnetBalance, setMainnetBalance] = React.useState("0");
const [kovanBalance, setKovanBalance] = React.useState("0");
const [rinkebyBalance, setRinkebyBalance] = React.useState("0");
const [goerliBalance, setGoerliBalance] = React.useState("0");
const [ropstenBalance, setRopstenBalance] = React.useState("0");
// Notification handler
const handleNewNotification = ({ type, title, message, position }) => {
dispatch({
type: type || "info",
message: message || "",
title: title || "New Notification",
position: position || "topR",
});
};
// Get the balance of the current user
const fetchTokenBalances = async (chain) => {
const options = { chain, address: userAddress };
const result = await Web3Api.account.getNativeBalance(options);
return result.balance;
};
// Fetch all token balances of the current user
const fetchBalances = async () => {
const balances = await Promise.all([
fetchTokenBalances("mainnet"),
fetchTokenBalances("kovan"),
fetchTokenBalances("rinkeby"),
fetchTokenBalances("goerli"),
fetchTokenBalances("ropsten"),
]);
// Balance of the current user on each chain
const mainnetBalance = balances[0];
const kovanBalance = balances[1];
const rinkebyBalance = balances[2];
const goerliBalance = balances[3];
const ropstenBalance = balances[4];
// Convert the balance from Wei to Ether
const mainnetBalanceEther = Moralis.Units.FromWei(mainnetBalance);
const kovanBalanceEther = Moralis.Units.FromWei(kovanBalance);
const rinkebyBalanceEther = Moralis.Units.FromWei(rinkebyBalance);
const goerliBalanceEther = Moralis.Units.FromWei(goerliBalance);
const ropstenBalanceEther = Moralis.Units.FromWei(ropstenBalance);
// Set the ETH balance of the current user
setMainnetBalance(mainnetBalanceEther);
setKovanBalance(kovanBalanceEther);
setRinkebyBalance(rinkebyBalanceEther);
setGoerliBalance(goerliBalanceEther);
setRopstenBalance(ropstenBalanceEther);
};
useEffect(() => {
if (isAuthenticated) {
// Notification object
const notificationData = {
types: "info",
title: "Wallet Connected ",
position: "bottomR",
};
// Show notification
handleNewNotification(notificationData);
// Fetches all token balances of the current user
fetchBalances();
}
}, [isAuthenticated]);
return (
{/* Dapp Header Banner */}
{/* Dapp Authentication */}
My Web3 Dashboard
{isAuthenticated ? (
{/* Dapp Balance Widget */}
{/* Wallet Address */}
{/* Dapp Todo */}
{/* Dapp NFT Owned by user */}
) : (
// Dapp Connect Wallet
)}
);
};
在上面的代码中:
我们检查钱包是否与 MoralisisAuthenticated状态相关联。
index.css用以下代码行替换您的内容:
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
font-family: Arial;
}
.container {
padding: 20px;
}
.not-connected > * > h1 {
z-index: 0 !important;
}
.topnav {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 50px;
margin-bottom: 20px;
}
.wallet-balance-widget {
display: flex;
gap: 20px;
margin: 30px 0;
}
.todo-container {
margin: 30px 0;
width: 100%;
}
.todo-container section {
padding: 0;
}
/* MY NFTS SECTION */
.my-nfts-section > section {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
margin: 30px 0;
}
footer {
text-align: center;
margin-top: 50px;
}
连接钱包后,我们的 dApp 仪表板应如下所示:
我们的 dApp 仪表板已准备好代码;你可以继续连接你的钱包以访问仪表板或按照它的工作原理。
您可以在此处[16]找到我们教程的完整 React 源代码。
本文演示了如何使用 Moralis Web3UIKit 安装和构建您的 dApp 前端。
Web3UIKit 是一个用于构建 Web3 项目界面的开源前端库,由Moralis[17]维护。您可以从这里[18]的官方存储库为 Web3UI 工具包做出贡献。
[1] Web3UI Kit ,我们还将使用它和 Moralis React SDK 构建一个 dApp 仪表板。: https://web3uikit.com/
[2] 帐户: https://admin.moralis.io/register
[3] Moralis 云服务器: https://web3.hashnode.com/how-to-build-your-own-nft-explorer-with-moralis-react-sdk#heading-step-4-setting-up-moralis-server
[4] 对JavaScript Promises: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
[5] 您还可以在此处查看: https://web3uikit-dapp-dashboard.netlify.app/
[6] Moralis: https://web3.hashnode.com/moralis.io
[7] Chakra UI: https://chakra-ui.com/
[8] Material UI: https://mui.com/
[9] 您可以在此处: https://web3ui.github.io/web3uikit/
[10] Create React App: https://create-react-app.dev/docs/getting-started/
[11] React应用程序:: https://reactjs.org/
[12] Moralis React SDK: https://docs.moralis.io/moralis-dapp/connect-the-sdk/connect-with-react
[13] Web3UI Kit: https://web3uikit.vercel.app/
[14] promise.all(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
[15] wei 转换为 ether: https://docs.moralis.io/moralis-dapp/tools/moralis-units
[16] 您可以在此处: https://github.com/unclebay143/web3uikit-dapp-dashboard
[17] Moralis: https://moralis.io/
[18] 您可以从这里: https://github.com/web3ui/web3uikit
| 留言与评论(共有 0 条评论) “” |