Skip to content

Instantly share code, notes, and snippets.

View greaveselliott's full-sized avatar

Elliott Greaves greaveselliott

  • London, UK
View GitHub Profile
const onFormSubmit = event => {
event.preventDefault();
const listItemValue = input.current.value;
if (listItemValue !== "") {
createNewListItem({
dispatch,
payload: { listItemValue }
});
import React, { useRef, useContext } from "react";
import { Store } from "./Store";
import { createNewListItem, deleteNewListItem } from "./Actions";
import "./app.scss";
export default function App() {
const { state, dispatch } = useContext(Store);
return (
export const createNewListItem = ({ dispatch, payload }) => {
return dispatch({
type: "CREATE_NEW_LIST_ITEM",
payload
});
};
export const deleteNewListItem = ({ dispatch, payload }) => {
return dispatch({
type: "DELETE_LIST_ITEM",
import uuid from "web-uuid-js";
function reducer(state, action) {
switch (action.type) {
case "CREATE_NEW_LIST_ITEM":
return {
...state,
list: state.list.concat({
uuid: uuid(),
listItemValue: action.payload.listItemValue
import uuid from "web-uuid-js";
function reducer(state, action) {
switch (action.type) {
case "CREATE_NEW_LIST_ITEM":
return {
...state,
list: state.list.concat({
uuid: uuid(),
listItemValue: action.payload.listItemValue
import React, { createContext, useReducer } from "react";
import reducer from "./reducer";
export const Store = createContext();
const initialState = {
list: []
};
export function StoreProvider({ children }) {
import React, { createContext, useReducer, useDebugValue } from "react";
import reducer from "./reducer";
export const Store = createContext();
const initialState = {
list: []
};
export function StoreProvider(props) {
import { createContext } from "react";
export const Store = createContext();
const initialState = {
list: []
};
import { createContext } from "react";
export const Store = createContext();
@greaveselliott
greaveselliott / App.jsx
Last active June 22, 2019 20:11
medium-reduxless-view
import React from "react";
import "./app.scss";
export default function App() {
return (
<main className="app">
<h1 className="app__title">To do list</h1>
<form className="app__form">
<input type="text" className="app__input" />