抱歉,如果帖子重復,我只是找到類組件的示例。
我有這個代碼:
export const getUniPrice = async () => {
const pair = await Uniswap.Fetcher.fetchPairData(HOKK, Uniswap.WETH[ETH_CHAIN_ID]);
const route = new Uniswap.Route([pair], Uniswap.WETH[ETH_CHAIN_ID]);
const priceUni = route.midPrice.toFixed(9);
return priceUni
}
它確實有效,請回答我的承諾物件:
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: "1106278.001628948"
我想知道的是,我怎樣才能正確地使用這個物件才能通過函陣列件來渲染它?我正在做這樣的事情,這顯然行不通,因為 react 不會渲染物件。
const Price = () => {
const { state, dispatch } = useContext(AppContext);
return(<>
{state.dex === 'uni' ? getUniPrice() : state.dex === 'cake'
? getCakePrice() : getMDexPrice()
}
</>)
}
有人可以給我一個提示嗎?這個函式在函陣列件之外運行,所以我不能只使用useState
uj5u.com熱心網友回復:
你說得對。結果getUnitPrice()是一個 Promise,而不是一個值,所以 React 所做的就是列印出該 Promise 的字串化版本。如果您需要已完成的值,則需要一個狀態值,該值將在更新時重新呈現頁面。像這樣的東西:
const [price, setPrice] = useState('');
useEffect(() => {
getUnitPrice().then((p) => setPrice(p));
}, []);
...
<div>Price: {price}</div>
如果您使用的是類組件,則可以像這樣初始化狀態:
state = {
price: '',
}
async componentDidMount() {
const p = await getUniPrice();
this.setState({ price: p });
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/432118.html
標籤:javascript 反应 异步等待 承诺 反应功能组件
