Skip to content

Instantly share code, notes, and snippets.

@erksch
Created March 15, 2019 11:17
Show Gist options
  • Save erksch/4173c6a8d6a67690685fcd3e3e851b50 to your computer and use it in GitHub Desktop.
Save erksch/4173c6a8d6a67690685fcd3e3e851b50 to your computer and use it in GitHub Desktop.
useOrders hook with decorated deletable orders
// 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