Я новичок в реакции, и я начинаю играть с redux, но я заметил, что каждый раз, когда мой дочерний компонент (пакет значков) меняет количество элементов в сумке, повторно визуализируется весь компонент заголовка. Я пробовал,
- useMemo
- createSelector
- React.memo (Header)
Есть предложения?
HEADER COMPONENT
const Header = ({ currentUser }) => {
const { hidden } = useSelector(state => state.cart);
return (
... ... ); }; экспорт заголовка по умолчанию;
КОМПОНЕНТ ЗНАЧКА КОРЗИНЫ
const CartIcon = () => {
const selectCartItems = createSelector(
state => state.cart,
cart => cart.cartItems
);
const cartItems = useSelector(selectCartItems);
const dispatch = useDispatch();
const totalItemsCount = (cartItems) => {
return cartItems.reduce((acc, crr) =>
acc + crr.quantity
, 0)
};
const totalItems = useMemo(() => totalItemsCount(cartItems), [cartItems])
return (
<div className="cart-icon" onClick={(() => dispatch(actionCreators.onToggleCart()))}>
<ShoppingIcon className="shopping-icon" />
<span className="item-count">{totalItems}</span>
</div>
);
};
export default CartIcon;