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>;
}