我有下面的代码。如果我传递道具onUpdate
并且onDelete
只是函数 - javascript 中的函数对象 - 由于分析器中的道具更改,子组件总是重新渲染。该功能已重新创建,onUpdate
现在onDelete
是新道具,对我来说很有意义。
但是,如果我添加useCallback
,他们不会感知到道具变化,因为这是useCallback
. 所以这导致了几个问题。
useCallback
使用每个传递给孩子的函数有什么缺点?
使用没有任何好处,useCallback
因为孩子会因为父母渲染而渲染?
为什么这不是默认行为?我知道这可能无法回答。
<UpdateGroupInput
onUpdate={useCallback(
group => {
const index = groups.findIndex(searchedGroup => searchedGroup.id === group.id);
const newGroups = groups.slice();
newGroups[index] = group;
onChange(items, newGroups);
hideAddItemModal();
},
[groups, items, onChange]
)}
onDelete={useCallback(
id => {
const newGroups = groups.filter(group => group.id !== id);
const newItems = items.filter(item => item.group !== id);
onChange(newItems, newGroups);
},
[groups, items, onChange]
)}
groups={groups}
visible={viewUpdateGroup}
></UpdateGroupInput>
慕工程0101907
相关分类