-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
42 lines (40 loc) · 1012 Bytes
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { useCallback, useEffect, useReducer } from "react";
import "./App.css";
import axios from "axios";
import Products from "./components/Products";
import reducer from "./reducers/cartReducer";
import Cart from "./components/Cart";
function App() {
const [state, dispatch] = useReducer(reducer, {
products: [],
cart: [],
});
console.log("cart", state.cart);
const getProducts = useCallback(async () => {
const { data } = await axios.get("https://dummyjson.com/products");
dispatch({
type: "ADD_PRODUCTS",
payload: data.products,
});
}, []);
useEffect(() => {
getProducts();
}, [getProducts]);
return (
<div className="App">
{state?.products ? (
<>
<Products
products={state.products}
cart={state.cart}
dispatch={dispatch}
/>
<Cart cart={state.cart} dispatch={dispatch} />
</>
) : (
<p>Loading...</p>
)}
</div>
);
}
export default App;