【发布时间】:2020-07-13 16:40:19
【问题描述】:
我是新手,我开始使用 redux,但我注意到每次我的子组件(图标包)更改包中的项目数时,整个标题组件重新呈现。我试过了,
- 使用备忘录
- 创建选择器
- React.memo(标题)
有什么建议吗?
标题组件
const Header = ({ currentUser }) => {
const { hidden } = useSelector(state => state.cart);
return (
<div className="header">
...
<div className="options">
...
<CartIcon />
</div>
</div>);
};
export default Header;
购物车图标组件
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;
【问题讨论】:
标签: reactjs redux react-redux