如何修改通过 useContext 传递的状态变量(不是 setState 修改,更像是可视化编辑)

How to modify a state variable passed with useContext (not the setState modify, more like a visual edit)

我在 App.js 中使用 setState,我已将它传递给具有 useContext 的子组件。我想在子组件中修改该状态。不像 setState 方式,而是改变它的小数点,从它的字符串中创建一个 Identicon 等等。但是 React 给我内存泄漏警告,我找不到解决方案。

例如

- const [ethBalance, setEthBalance] =  useState(0); 

- <BuyContext.Provider value={{ethBalance, tokenBalance, buyToken, web3}}><BuyComponent /></BuyContext.Provider>

BuyComponent 我想将余额从 wei 更改为 eth;

import React, { useState, useContext } from 'react'
import { BuyContext } from '../App.js'

const { ethBalance, tokenBalance, buyToken, web3 } = useContext(BuyContext);

Balance: {window.web3.utils.fromWei({ethBalance})}

部分相关代码。

我也无法让它识别 web3 函数,尽管我通过了它。它说 web3 未定义。

能否尝试将子组件中的balance设置为useEffect函数?

import React, { useState, useContext, useEffect } from 'react'
import { BuyContext } from '../App.js'

const { ethBalance, tokenBalance, buyToken, web3 } = useContext(BuyContext);
const [balance, setBalance] = useState(null);

useEffect(() => {
    if (ethBalance) {
        setBalance(window.web3.utils.fromWei({ethBalance}));
    }
}, [ethBalance]);

console.log(balance);