在 react-table 檔案示例中,表的輸入資料被記憶,原因如下:
React Table 依賴于記憶來確定何時更新或計算狀態和副作用。這意味著您傳遞給 useTable 的每個選項都應該通過
React.useMemo
(對于物件)或React.useCallback
(對于函式)進行記憶。
他們所有的示例都使用本地定義的 javascript 物件。如果我要在掛鉤中從服務器獲取資料useEffect
,并將其添加到組件的狀態中,我還需要使用 useMemo 來記憶它嗎?如果是這樣,這種記憶應該發生在內部還是外部useEffect
?我仍在思考這些 React 鉤子以及何時/是否應該一起使用它們。
uj5u.com熱心網友回復:
使用useMemo或useCallback的原因是優化
因此,如果您在優化的useEffect中從服務器獲取資料,假設它僅在初始渲染后運行,并通過useState將結果放入狀態中,那么即使存在里面有重計算。為什么?因為heavyCalculation(如果有的話)只會運行一次并且狀態永遠不會改變,所以它永遠不會影響react-table的性能。
const URL = 'https://for.example.only'
function heavyCalculation(data) {
...
}
function Example() {
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch(URL);
const responseJson = await response.json();
if (!response.ok) {
throw new Error(responseJson.status_message);
}
const updatedData = heavyCalculation(responseJson);
setData(updatedData);
} catch (error) {
console.log(error);
}
}
fetchData();
},[])
...
}
您可以在此處查看另一個示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/508505.html