Skip to content

Instantly share code, notes, and snippets.

View shanebdavis's full-sized avatar

Shane Brinkman-Davis Delamore shanebdavis

View GitHub Profile
@shanebdavis
shanebdavis / todo-hooks-for-redux.js
Created November 21, 2019 22:29
Demo using hooks-for-redux
//**********************************************
// src/components/ToDo.js
//**********************************************
import React, { useState } from "react";
import ReduxLogo from "../assets/redux.png";
import { ToDoItem } from "./ToDoItem";
import "./ToDo.css";
import { addItem, useList } from "../reduxState/list";
export const ToDo = () => {
@shanebdavis
shanebdavis / list.js
Created November 21, 2019 22:33
The heart of the Todo app's hooks-for-redux implementation
import { useRedux } from "hooks-for-redux";
const getUniqueId = list =>
list.length > 0 ? Math.max(...list.map(t => t.id)) + 1 : 1;
export const [useList, { addItem, deleteItem }] = useRedux(
"list",
[
{ id: 1, text: "clean the house" },
{ id: 2, text: "buy milk" }
@shanebdavis
shanebdavis / tiny-todo.js
Created November 21, 2019 23:06
The core of the TODO app using hooks-for-redux
import React, { useState } from "react";
import ReactDOM from "react-dom";
import { Provider, useRedux } from "hooks-for-redux";
// redux/list.js
const getUniqueId = list =>
list.length > 0 ? Math.max(...list.map(t => t.id)) + 1 : 1;
const [useList, { addItem, deleteItem }] = useRedux(
"list",
@shanebdavis
shanebdavis / tiny-toggle.js
Created November 21, 2019 23:38
Toggle implemented with hooks-for-redux
import React from "react";
import ReactDOM from "react-dom";
import { applyMiddleware } from "redux";
import { composeWithDevTools } from "redux-devtools-extension";
import thunkMiddleware from "redux-thunk";
import { Provider, useRedux, createStore, setStore } from "hooks-for-redux";
import "./styles.css";
// store.js
import React from "react";
import ReactDOM from "react-dom";
import { Provider, useRedux } from "hooks-for-redux";
import "./styles.css";
// toggleState.js
const [useToggle, { toggleSwitch }] = useRedux("toggle", false, {
toggleSwitch: state => !state
});
@shanebdavis
shanebdavis / ux-concept.js
Created November 25, 2019 18:23
Todo App UX-concept (React)
const ToDoItem = ({ item }) =>
<li>
{item.text}
<button onClick={ deleteItem }/>
</li>
const ToDo = () =>
<div>
<ul>
{useList().map(item => (
@shanebdavis
shanebdavis / todo-state.js
Last active December 2, 2019 08:02
Client-side-state for todo app (pseudo-react)
let list = [
{ id: 1, text: "clean the house" },
{ id: 2, text: "buy milk" }
];
// REDUCERS
const _addItem = (list, item) => [...list, { ...item, id: uniqueId() }]
const _deleteItem = (list, item) => list.filter(todo => todo.id !== item.id)
// STUBS:
import React from "react";
import { useSelector, useDispatch } from "react-redux";
import appActions from "./redux/actions/appActions";
import ToDo from "./components/ToDo";
import "./App.css";
const App = () => {
const list = useSelector((store) => store.appReducer.list);
const dispatch = useDispatch();
import React from "react";
import { ToDo } from "./components/ToDo";
import "./App.css";
export const App = () => <ToDo />;
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "hooks-for-redux";
import { App } from "./App";
ReactDOM.render(
<Provider>
<App />
</Provider>,
document.getElementById("root")