我有一個反應應用程式,可以獲取我在渲染時需要的資料。當資料到達時,我有一個useEffect適當的位置來格式化資料并更新所需的變數。
我現在的問題是我們正在使用的格式函式已更改為一個鉤子,我不能再在 useEffect 中使用它了,我想知道是否有一種方法可以在沒有 useEffect
舉一個簡化的例子,最初我有類似這個組件的東西:
const MyComponent = ({myValue}) => {
const [outputVal, setOutputVal] = useState(0);
useEffect(() => {
if (myValue != null) setOutputVal(formatCurrency(myValue));
}, [myValue]);
[...]
formatCurrency是一個使用該Intl.NumberFormat功能的簡單函式,只需根據需要轉換值。我現在改用該react-i18next庫,它具有我想要的其他功能,但它使用掛鉤,這意味著我不能在useEffect.
我試圖將其更改為在頁面加載時使用該功能,即:
const [outputVal, setOutputVal] = useState(formatCurrency(myValue));
我發現的問題是 的初始值為myValue空,并且函式在myValue更新時不會重新運行。
任何有關此的幫助或資訊都會很棒。
uj5u.com熱心網友回復:
由于formatCurrency可能只是將數值格式化為字串,因此您可以在每次渲染時運行它,并將其視為您在渲染期間使用的任何普通變數,即:
const MyComponent = ({myValue}) => {
const outputVal = formatCurrency(myValue);
return <p>{outputVal}</p>
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/409814.html
標籤:
