Skip to content

Instantly share code, notes, and snippets.

View erksch's full-sized avatar

Erik Ziegler erksch

  • voize
  • Germany
View GitHub Profile
class OrderService {
static async list() {
const orders = await api.get('/api/orders');
return orders;
}
static async delete(id) {
await api.delete(`/api/orders/${id}`);
}
}
@erksch
erksch / Orders.js
Created March 15, 2019 11:07
Orders Class Component
import React from 'react';
import OrderService from './OrderService';
class Orders {
constructor(props) {
super(props);
this.state = {
orders: [],
};
import { useState, useEffect } from 'react';
import OrderService from './OrderService';
function useOrders() {
const [orders, setOrders] = useState([]);
async function fetchOrders() {
const orders = await OrderService.get();
setOrders(orders);
}
// Orders.js
import React from 'react';
import useOrders from './useOrders';
function Orders() {
const { orders } = useOrders();
return (
<div>
<h1>Orders</h1>
// OrderDeleteButton.js
import React from 'react';
function OrderDeleteButton(props) {
function handleClick() {
const { order, onClick } = props;
onClick(order.id);
}
return (
@erksch
erksch / OrdersListItem.js
Created March 15, 2019 11:13
OrdersListItem component with OrderDeleteButton
// OrdersListItem.js
import React from 'react';
import OrderDeleteButton from './OrderDeleteButton';
function OrdersListItem(props) {
const { order } = props;
return (
<li>
<h2>{order.title}</h2>
@erksch
erksch / Orders.js
Created March 15, 2019 11:14
Orders component with delete order logic
// Orders.js
import React from 'react';
import OrderService from './OrderService';
class Orders {
constructor(props) {
super(props);
this.state = {
orders: [],
// Orders.js
return (
...
<OrdersList
orders={orders}
onRemoveItem={this.handleRemove}
/>
...
);
@erksch
erksch / useOrders.js
Created March 15, 2019 11:16
useOrders hook with delete logic
// useOrders.js
import { useState, useEffect } from 'react';
import OrderService from './OrderService';
function useOrders() {
const [orders, setOrders] = useState([]);
async function fetchOrders() {
const orders = await OrderService.get();
setOrders(orders);
@erksch
erksch / useOrders.js
Created March 15, 2019 11:17
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);