Created
March 15, 2019 11:17
-
-
Save erksch/4173c6a8d6a67690685fcd3e3e851b50 to your computer and use it in GitHub Desktop.
useOrders hook with decorated deletable orders
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// useOrders.js | |
import { useState, useEffect } from 'react'; | |
import OrderService from './OrderService'; | |
function useOrders() { | |
const [orders, setOrders] = useState([]); | |
function createDeleteHandler(id) { | |
return async function () { | |
await OrderService.delete(id); | |
setOrders(orders.filter(order => order.id !== id)); | |
} | |
} | |
function getDeletableOrders() { | |
return orders.map(order => ({ | |
...order, | |
delete: createDeleteHandler(order.id), | |
}); | |
} | |
async function fetchOrders() { | |
const apiOrders = await OrderService.get(); | |
setOrders(apiOrders); | |
} | |
useEffect(() => { | |
fetchOrders(); | |
}, []); | |
return { | |
orders: getDeletableOrders(), | |
}; | |
} | |
export default useOrders; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment