我正在try 记住我的ItemCard
组件,所以当我调用setItems()
时,只有正在更新的ItemCard
组件会被重新呈现,这可能吗?
我有一个非常简单的组件,比如:
const ItemList = () => {
const [items, setItems] = useState([
{ id: 1, count: 5 },
{ id: 2, count: 7 },
{ id: 3, count: 2 },
]);
const updateItemCount = (itemId, add) => {
const updatedItems = items.map((item) => {
const { id, count } = item;
if (id === itemId) {
return { ...item, count: add ? count + 1 : count - 1 };
}
return item;
});
setItems(updatedItems);
};
return (
<div>
{items.map((item) => (
<ItemCard {...item} updateItemCount={updateItemCount} />
))}
</div>
);
};
而ItemCard看起来像是
import { memo } from 'react';
const ItemCard = memo(({id, count, updateItemCount}) => {
console.log("re-rendered", id)
return (
<button onClick={() => updateItemCount(id, true)}></button>
);
});
问题是,当我记录重新渲染时,它们似乎都在单击按钮后重新渲染