web3.js--getBalance到web3.utils.fromWei,将值存储在一个变量中,用于表中

Posted

技术标签:

【中文标题】web3.js--getBalance到web3.utils.fromWei,将值存储在一个变量中,用于表中【英文标题】:Web3.js-- getBalance to web3.utils.fromWei, store the value in a variable to be used in a table 【发布时间】:2021-12-13 05:13:35 【问题描述】:

所以我尝试了几个小时来解决这个问题,我可以控制台记录余额,但我似乎无法将余额存储在 var 中以供以后使用。目标是获取用户帐户余额 (eth) 并将其显示在表格中。无论如何,这就是我得到的。

 
 function App()
 
 ///.....////
 
 
 const Web3 = require("web3");
  const web3 = new Web3(
    Web3.givenProvider ||
      "https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161"
  );

  async function checkBalance() 
    try 
      await web3.eth.getBalance(account).then(web3.utils.fromWei());
     catch (error) 
      console.log(error);
    
  
  
  
  ////.....//// checkBalance to be displayed in a table
  
  <Table variant="striped" >
            <TableCaption>Token balances of account</TableCaption>
            <Thead>
              <Tr>
                <Th>Token</Th>
                <Th>Contract Address</Th>
                <Th>Balance</Th>
              </Tr>
            </Thead>
            <Tbody>
              <Tr>
                <Td>ETH</Td>
                <Td>0x0000000000000000000000000000000000000000</Td>
                <Td>checkBalance</Td>
              </Tr>
            </Tbody>
            <Tfoot>
              <Tr>
                <Th>Token</Th>
                <Th>Contract Address</Th>
                <Th>Balance</Th>
              </Tr>
            </Tfoot>
          </Table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

我在控制台中收到的错误是“警告:函数作为 React 子项无效。如果您返回组件而不是从渲染中返回,则可能会发生这种情况。或者您可能打算调用此函数而不是返回它。”

【问题讨论】:

您觉得我的回答有帮助吗? 【参考方案1】:

函数web3.eth.getBalance(address).then() 需要将函数传递到then() 子句中。

在下面的 sn-p 中,我传递了一个接受 balanceInWei 作为参数的函数。只有这样你才能将balanceInWei 变量传递给web3.utils.fromWei(balanceInWei) 函数,让它返回地址的ETH 余额

const Web3 = require("web3");
const web3 = new Web3("https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161");
let address = "0x0000000000000000000000000000000000000000";
let balance;

async function checkBalance() 
    try 
        web3.eth.getBalance(address).then((balanceInWei) => 
            balance = web3.utils.fromWei(balanceInWei);
            console.log("Balance in wei:", balanceInWei);
            console.log("Balance in ETH:", balance);
        );
     catch (error) 
        console.log(error);
    


checkBalance();

此外,您不应发布您的 infura 链接。您通过在此处发布您的 infura 项目的凭据将其公开。下次用eq替换它。 https://ropsten.infura.io/v3/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

【讨论】:

以上是关于web3.js--getBalance到web3.utils.fromWei,将值存储在一个变量中,用于表中的主要内容,如果未能解决你的问题,请参考以下文章

探索Web3基础设施:从计算索引到存储,Web3网络收入的黎明已至

Web3 web3.eth.sendSignedTransaction 无效参数

戳Web3的神话?戳到铁板。

戳Web3的神话?戳到铁板。

从 Web3到Web2.5,是倒退还是另辟蹊径?

Web3/Metamask:错误:合约尚未部署到 Kovan 网络上检测到的网络(网络/工件不匹配)