Web开发

首页 » 常识 » 预防 » 使用Web3React更快地开发dAp
TUhjnbcbe - 2023/2/7 23:34:00
白癜风患者微信群 http://liangssw.com/bozhu/12747.html

本文目录

什么是Web3反应?

为什么使用Web3-act可能是一个更好的主意?

安装web3-act

连接钱包第1步:设置Web3ReactProvider第2步:设置挂钩

合同中的读写读数写作

什么是Web3-React?

Web3-act是一个基于React的框架,有助于简化dApp的前端开发。

Web3-act还充当状态机,用于维护与您的dApp相关的数据,并将其注入组件树中任何需要的位置。Web3-React支持多种钱包,从Metamask和Coinbase等浏览器钱包到Tzor和Ledger等硬件钱包。

在Web3中,我们使用Web3-Modal在dApp中进行钱包连接。Web3-模态非常适合初学者,但随着我们扩展项目,处理Web3-模态变得更加困难。

因此,web3-act可能是一个更好的选择,因为:

更适合构建现代dApp

拥有更好的开发人员体验

减少代码冗余

并且是一个直观的框架,可以使用

为什么使用Web3-act可能是一个更好的选择?

Web3-React在许多方面提供了灵活性。如前所述,它对许多钱包都有很好的支持。

但即使钱包不包含在web3-act包中,您也可以创建自定义连接器并连接web3-act列出的钱包以外的钱包!

Web3-act在引擎盖下使用以太币.js或Web3.js从而提供流畅的体验,因为仅使用以太币连接钱包.js可能是一个非常痛苦的过程。

注意:在继续之前,请确保您了解ContextAPI,换句话说,使用上下文钩子。这是Web3-React的关键功能。

安装web3-act

让我们安装web3-act!

在本文中,我们假设您已经设置了ReactJS/NextJS应用程序。

在您的应用目录中,运行以下命令以安装web-act:

npminstall

web-act/co

或者

yarnadd

web3-act/co

现在,为了连接基于浏览器的钱包,我们需要安装以下web3-act包:

npminstall

web3-act/injected-connector

或者

yarnadd

web3-act/injected-connector

和。您拥有将dApp连接到浏览器钱包所需的所有成分!让我们开始编写代码来连接钱包!

连接钱包

本部分假定你已创建应用并安装了以前的依赖项。现在它已经解决了,让我们直接进入这个!

第1步:设置Web3ReactProvider

让我们跳到文件夹下的(下一步)文件!_app.jspages

编辑代码,使其如下所示:

import../styles/globals.cssimport{Web3ReactProvider}from

web3-act/coimport{providers,Web3Provider}fromethersfunctiongetLibrary(provider,connector){turnnewproviders.Web3Provider(provider)}functionMyApp({Component,pageProps}){turn(Web3ReactProvidergetLibrary={getLibrary}Component{...pageProps}//Web3ReactProvider)}exportdefaultMyApp

完成?现在让我们了解代码!

此函数返回提供程序对象。

functiongetLibrary(provider,connector){turnnewproviders.Web3Provider(provider)}

Web3ReactProvider是上下文提供程序,它将所有数据传递到组件树中。

functionMyApp({Component,pageProps}){turn(Web3ReactProvidergetLibrary={getLibrary}Component{...pageProps}//Web3ReactProvider)}

第2步:设置挂钩

现在让我们跳到您的文件夹中。index.jspages

importHeadfromnext/headimportImagefromnext/imageimportstylesfrom../styles/Home.module.cssimport{InjectedConnector}from

web3-act/injected-connectorimport{useWeb3React}from

web3-act/coimport{useState}fromactimport{CONTRACT_ADDRESS,CONTRACT_ABI}from../constantsexportdefaultfunctionHome(){const[sult,setResult]=useState("")//web3-acthook,helpsinfetching//thedatapassedbyWeb3ReactProviderconst{active,activate,deactivate,account,library,connector,error}=useWeb3React()//injectedprovideridentifierconstinjected=newInjectedConnector({supportedChainIds:[]})constconnectWallet=async()={try{awaitactivate(injected)}catch(err){console.error(err)}}constdisconnectWallet=async()={try{deactivate(injected)}catch(err){console.error(err)}}turn(divclassName={styles.container}HeadtitleCateNextApp/titlemetaname="description"content="Generatedbycatenextapp"/linkl="icon"hf="/favicon.ico"//HeadbuttononClick={connectWallet}ConnectWallet/button{active?spanConnectedwithb{account}/b/span:spanNotConnected/span}buttononClick={disconnectWallet}DisconnectWallet/button/div)}

好的,现在让我们看看useWeb3Reacthook

const{active,activate,deactivate,account,library,connector,error}=useWeb3React()

useWeb3React是来自Web-React库的自定义钩子,它返回了许多有用的功能。

此钩子返回:

connector;//connectorobjectturnssomeusefulconnection//methodslikeactivate()anddeactivate()library;//libraryistheproviderobjectthatwe//passedwiththeWeb3ReactProviderchainId;//turnsthechainIdfortheaccountthat//isconnectedtothedAppaccount;//theaccountaddssoftheconnectedaccountactive;//activeisastatevariablewhichturnsbooleanvalues//thatdetermineswhetherthewalletconnectionis//activeorinactiveerror;//turnsanyerrorhappeningwiththewalletconnection

现在让我们看看注入的变量

constinjected=newInjectedConnector({supportedChainIds:[]})//wecanlistmultiplenetworksbylistingtheir//chainIds,separatedby

1
查看完整版本: 使用Web3React更快地开发dAp