I am trying to convert a class component to functional component but i keep getting problem, I think im doing it wrongly
Class Component:
class CountC extends React.Component {
componentDidMount() {
this.props.refreshCart();
}
render(){
const { cart } = this.props;
return (
<p> {`${cart !== null ? cart.order_items.length : 0}`}</p>
);
}};
const mapStateToProps = state => {
return {
cart: state.cart.shoppingCart,
};
};
const mapDispatchToProps = dispatch => {
return {
refreshCart: () => dispatch(fetchCart()),
}
}
export default connect(mapStateToProps, mapDispatchToProps)(CountC);
This is what i try to do as my Functional Component (Please note I dont understand function component just yet)
function CountC(props) {
const [refreshCart, setRefreshCart] = useState();
useEffect(() => {
setRefreshCart(true);
console.log("component mounted!");
}, []);
return ( <p> {`${cart !== null ? cart.order_items.length : 0}`}</p> );
const mapStateToProps = state => {
return {
cart: state.cart.shoppingCart,
};
};
const mapDispatchToProps = dispatch => {
return {
refreshCart: () => dispatch(fetchCart()),
}
}
export default connect(mapStateToProps, mapDispatchToProps)(CountC);
Its not giving me the desired output, I have tried tweaking it, still!,
Advertisement
Answer
Try this one, please.
const CountC = () => {
const dispatch = useDispatch();
const cart = useSelector((state) => state.cart.shoppingCart);
useEffect(() => {
dispatch(refreshCart());
}, [dispatch]);
return <p> {`${cart !== null ? cart.order_items.length : 0}`}</p>;
}