ITMISS
2022-11-11 16:18:58
我想檢查某個 prop 是否手動更改,然后使用 React 的內(nèi)置比較功能對其他 prop 進(jìn)行比較。例如:React.memo( () => <div />, (prevProps, nextProps) => { if (!nextProps.visible) { return true; } return React.shallowCompare(prevProps, nextProps); },);我可以輕松編寫自己的比較函數(shù)或從 React 的源代碼復(fù)制/粘貼,但如果 React 更改了它們的默認(rèn)比較函數(shù),那么我也必須手動更改我的函數(shù)。有沒有辦法使用 React 的內(nèi)置比較功能React.memo?此外,AFAIKreact-addons-shallow-compare已過時。
1 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗 獲得超5個贊
抱歉不行。shallowEqual如果您不提供比較功能,則React 默認(rèn)為,但如果您返回任何特殊的東西(例如return null),則沒有使用默認(rèn)行為的額外邏輯。
React 的用法:
const prevProps = currentChild.memoizedProps;
// Default to shallow comparison
let compare = Component.compare;
compare = compare !== null ? compare : shallowEqual;
if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {
...
React 目前沒有導(dǎo)出shallowEqual. 但是,React 的文檔指出它只是淺比較,這不太可能發(fā)生太大變化,并且可以像您所知的那樣輕松實現(xiàn)(示例)。我假設(shè)這個決定是為了減少他們的團(tuán)隊向開發(fā)人員公開的 API。
添加回答
舉報
0/150
提交
取消