簡體   English   中英

如何將值從 useState 傳遞到 web3 中的 balanceOf function

[英]How Can I pass value from useState into balanceOf function in web3

我正在創建一個 DEFI dapp,我想使用 web3.eth.get accounts() 獲取與元掩碼相關的帳戶;

這就是我在 console.log ['0x32F36b36e78E89bdd6efa9e893ec2d87e4E2e3E9'] 時得到的,我創建了使用 State 來推送這個帳戶以在 React 組件中作為道具使用,但是當我 console.log 的值 useState 我什么也沒得到。

那么,如果我將在 useState 中獲取此值,我該如何將其傳遞給 balanceOf function?

使用狀態

const [userAccount, setUserAccount] = useState([]);

function 獲取賬戶並獲取該賬戶的余額

const blockchainDataLoad = async () => {

const web3 = window.web3;
console.log(userAccount);
// get the Accounts
const accounts = await web3.eth.getAccounts();
setUserAccount(accounts[0]);




// get the Network Id of The contracts
const networkId = await web3.eth.net.getId();

// ******************************** Dai Token EuroToken ************************* //

// Get the deployed contract object using the network ID
const daiTokenData = DaiToken.networks[networkId];

if(daiTokenData) {

  // Create a instance of the contract
  const daiToken = new web3.eth.Contract(DaiToken.abi, daiTokenData.address);
  setDTokens(daiToken);

  // get the balance from the investor account
  **let daiTokenBalance = await daiToken.methods.balanceOf(userAccount).call();**
  setDTokenBalance(daiTokenBalance.toString());
  console.log(daiTokenBalance);

您應該在useEffect掛鈎中獲取帳戶,因此當您的組件呈現時,您的組件的 state 將已經設置。

useEffect(() => {
    const getAccount = async () => {
      const accounts = await web3.eth.getAccounts();
      setAccount(accounts[0]);
    };
    // call getAccount() if web3 is defined otherwise you app will break
    web3 && getAccount();
  }, [web3]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM