承诺基于合同附近,靠近钱包,以及浏览器的RPC客户端附近。这是为了促进与几乎区块链的反应集成,并避免建立钱包和合同的巨大样板。
文档
view的缓存系统使用NPM:
# You can use any wallet selector version you want
npm install @wpdas/naxios @near-wallet-selector/[email protected]使用纱线:
# You can use any wallet selector version you want
yarn add @wpdas/naxios @near-wallet-selector/[email protected]导入近钱包选择器样式。该应用需要它正确渲染钱包选择器。
import '@near-wallet-selector/modal-ui/styles.css'立即将钱包和/或合同的API放置在适当的位置非常容易。看看:
// web3Api.ts
import naxios from '@wpdas/naxios'
const naxiosInstance = new naxios ( {
rpcNodeUrl : 'https://free.rpc.fastnear.com' , // optional
contractId : CONTRACT_ID ,
network : 'testnet' ,
} )
/**
* NEAR Wallet API (Must be a single instance)
*/
export const walletApi = naxiosInstance . walletApi ( )
// Examples of contract API instance usage
/**
* Contract API
* This is going to use default contractId (CONTRACT_ID)
*/
export const contractApi = naxiosInstance . contractApi ( )
/**
* Another Contract API
*/
export const socialDBcontractApi = naxiosInstance . contractApi ( { contractId : 'v1.social08.testnet' } )
/**
* Greeting Contract API
*/
export const greetingContractApi = naxiosInstance . contractApi ( {
contractId : 'dev-1692221685438-15421910364142' ,
} )
/**
* NEAR RPC API
*/
export const rpcApi = naxiosInstance . rpcApi ( ) 您可以通过调用signInModal()来打开近钱包选择器模式:
import { walletApi } from './web3Api'
walletApi . signInModal ( ) 默认情况下,Naxios仅使用@近乎墙壁的选择/我的near-wallet作为连接钱包的一种手段。但是,您可以按以下方式添加其他钱包选择器:
npm install @near-wallet-selector/ledger @near-wallet-selector/my-near-wallet然后,您可以按照以下方式启动naxius:
import naxios from '@wpdas/naxios'
import { setupMyNearWallet } from '@near-wallet-selector/my-near-wallet'
import { setupLedger } from '@near-wallet-selector/ledger'
const naxiosInstance = new naxios ( {
contractId : CONTRACT_ID ,
network : 'testnet' , // or mainnet, localnet
walletSelectorModules : [ setupMyNearWallet ( ) , setupLedger ( ) ] ,
} )
/**
* NEAR Wallet API (Must be a single instance)
*/
export const walletApi = naxiosInstance . walletApi ( )在此处查找所有近钱包选择器:靠近钱包选择器
view :只读呼叫以从网络中检索信息。它具有以下参数:method :合同的方法名称。props? :用于合同方法的可选args 。config? :目前,这仅具有useCache道具。当usecache为真时,这将使用未过时的缓存数据,而不是调用合同方法。call :调用一种改变合同状态的方法。这是应付的。它具有以下参数:method :合同的方法名称props? :如果您想在交易成功后将用户带到特定页面,则带有合同方法的可选参数,供应args的使用, gas ,要附加的deposit和callbackUrlcallMultiple :调用多种改变合同状态的方法。这是应付的,并具有以下参数:transactionsList :交易道具列表。您可以使用buildTransaction(...)来帮助您callbackUrl? :一个页面,将用户带到所有交易成功之后。 accounts :签名帐户。accountId :帐户列表中的主/第一个签名帐户ID。contractId ID。initNear :初始化与近区块链的连接。当有任何合同互动时,这将自动称为。network :当前网络( testnet , mainnet或localnet )。recentlySignedInWallets :最近在钱包中签名的5个ID-S。selectedWalletId :选定的钱包IDsignInModal :打开标志钱包模式。wallet :钱包实例。walletSelector :Walletselector实例。使用view方法是免费的。
import { greetingContractApi } from './web3Api'
// [free]
greetingContractApi . view < string > ( 'get_greeting' ) . then ( ( response ) => console . log ( response ) )您需要为您提出的call方法的每个请求付费。这将更改数据并将其存储在区块链中。
import { greetingContractApi } from './web3Api'
// Set greeting [payable]
const args : { message : 'Hi there!!!' }
greetingContractApi . call < string | undefined > ( 'set_greeting' , args ) . then ( ( response ) => console . log ( response || 'done!' ) )除了call外,您还需要为提出的每个请求付款。这将更改数据并将其存储在区块链中。
import { buildTransaction } from '@wpdas/naxios'
import { contractApi } from './web3Api'
// Using the default instance's contract
const transactionA = buildTransaction ( 'set_greeting' , { args : { greeting : 'Hello my dear!' } } )
const transactionB = buildTransaction ( 'set_age' , { args : { age : 22 } } )
// Using diff contract
const transactionC = buildTransaction ( 'update_state' , {
receiverId : 'my-state-contract.testnet' ,
args : { allowed : true } ,
} )
// Optional
const callbackUrl = 'https://my-page.com/callback-success'
// [payable]
contractApi . callMultiple ( [ transactionA , transactionB , transactionC ] , callbackUrl ) . then ( ( ) => console . log ( 'Done!' ) )有两种缓存系统要使用。它们是Memory Cache和Storage Cache 。
Memory Cache :当应用程序刷新时,将清除其数据仅在内存中。
Storage Cache :即使刷新了浏览器选项卡,数据也将保留。数据使用本地存储持续存在。
实例化缓存时,您需要提供expirationTime (以秒为单位)。这用于知道何时应返回缓存,而不是进行真正的合同调用。高速缓存到期时,对合同进行了真正的呼吁。每个合同的方法都有自己的到期时间。
// web3Api.ts
import naxios , { StorageCache } from '@wpdas/naxios'
// ...
/**
* Cached - Greeting Contract API
*/
export const cachedGreetingContractApi = naxiosInstance . contractApi ( {
contractId : 'dev-1692221685438-15421910364142' ,
cache : new StorageCache ( { expirationTime : 5 * 60 } ) , // 5 minutes
} )然后,要使用缓存的view ,您只需传递配置对象,说您要使用缓存的数据即可。
import { cachedGreetingContractApi } from './web3Api'
// Fetch Greetings [free]
const args : { }
const config : { useCache : true }
cachedGreetingContractApi . view < string > ( 'get_greeting' , args , config ) . then ( ( response ) => console . log ( response ) )Naxios还提供了对接近RPC API的访问权限,因此您可以查询所需的任何数据。访问RPC API文档附近,以了解如何使用它。
import { rpcApi } from './web3Api'
// Viewing account using Near RPC API
rpcApi
. query ( {
request_type : 'view_account' ,
finality : 'final' ,
account_id : 'wendersonpires.near' ,
} )
. then ( ( data ) => console . log ( 'Account Data:' , data ) ) buildTransaction当您需要构建合同的交易主体时, buildTransaction方法很有用,主要是当您要拨打多个合同时。
请参阅此处的参考。
validateNearAddress这用于检查地址是否有效近地址。
import { validateNearAddress } from '@wpdas/naxios'
console . log ( validateNearAddress ( 'fake.near' ) ) // true
console . log ( validateNearAddress ( 'fake.nears' ) ) // false
console . log ( validateNearAddress ( 'fake.testnet' ) ) // true
console . log ( validateNearAddress ( 'fake' ) ) // false calculateDepositByDataSize计算存储数据所需的存款。 (每字节〜0.00001n),缓冲区有些额外
import { calculateDepositByDataSize } from '@wpdas/naxios'
const myData = { age : 22 , name : 'user name' }
console . log ( calculateDepositByDataSize ( myData ) ) // 0.00087 Near (not yocto NEAR) isClient简单的检查器说这是在服务器还是客户端上运行的。
import { isClient } from '@wpdas/naxios'
if ( isClient ( ) ) {
console . log ( 'Hi from client' )
} else {
console . log ( 'Hi from server' )
} 随意打开问题或提取请求。对于重大更改,请先开设一个问题,以讨论您想更改的内容。