Skip to content

Instantly share code, notes, and snippets.

View pubudu-ranasinghe's full-sized avatar
🦄
¯\_(ツ)_/¯

Pubudu Ranasinghe pubudu-ranasinghe

🦄
¯\_(ツ)_/¯
View GitHub Profile
@pubudu-ranasinghe
pubudu-ranasinghe / Todos.js
Created November 3, 2019 11:26
react-context-example-13
import React from "react";
import { NewItem, ItemList } from "./Items";
export default function Todo() {
return (
<header className="App-header">
<h2>🚀 ToDo App</h2>
<NewItem />
<ItemList />
</header>
@pubudu-ranasinghe
pubudu-ranasinghe / TodoContext.js
Created November 3, 2019 09:28
react-context-example-13
import { createContext } from "react";
const TodoContext = createContext();
export default TodoContext;
@pubudu-ranasinghe
pubudu-ranasinghe / Items.js
Last active November 3, 2019 10:54
react-context-example-12
import React, { useState } from "react";
import {
useTodoContext,
addTodo,
removeTodo,
clearAll
} from "../contexts/TodoContext";
export function NewItem() {
const [text, setText] = useState("");
@pubudu-ranasinghe
pubudu-ranasinghe / TodoContext.js
Created November 3, 2019 03:24
react-context-example-11
import React, { createContext, useReducer, useContext } from "react";
export const TodoContext = createContext();
// Initial state
const initialItems = [
"Extract todo state to todo context",
"Implement todo provider"
];
@pubudu-ranasinghe
pubudu-ranasinghe / App.js
Created November 2, 2019 18:20
react-context-example-10
import React, { useState } from "react";
import { ItemList, NewItem } from "./components/Items";
import { TodoProvider } from "./contexts/TodoContext";
import "./App.css";
function App() {
return (
<TodoProvider>
<div className="App">
<header className="App-header">
@pubudu-ranasinghe
pubudu-ranasinghe / TodoContext.js
Created November 2, 2019 18:17
react-context-example-09
import React, { createContext, useState, useContext } from "react";
export const TodoContext = createContext();
const initialItems = [
"Extract todo state to todo context",
"Implement todo provider"
];
// We wrap the provider in a nice little component
@pubudu-ranasinghe
pubudu-ranasinghe / Items.js
Last active November 3, 2019 10:12
react-context-example-08
import React, { useState, useContext } from "react";
import TodoContext from "../contexts/TodoContext";
export function NewItem() {
const [text, setText] = useState("");
// TodoContext is made available as a hook
const todoContext = useContext(TodoContext);
return (
<div className="Item">
@pubudu-ranasinghe
pubudu-ranasinghe / Items.js
Last active November 3, 2019 10:13
react-context-eample-07
import React, { useState } from "react";
import TodoContext from "../contexts/TodoContext";
export function NewItem() {
const [text, setText] = useState("");
return (
<TodoContext.Consumer>
{values => (
<div className="Item">
@pubudu-ranasinghe
pubudu-ranasinghe / App.js
Last active November 3, 2019 10:09
react-context-example-06
import React, { useState } from "react";
import { ItemList, NewItem } from "./components/Items";
import TodoContext from "./contexts/TodoContext";
import "./App.css";
const initialItems = [
"Setup todo context",
"Consume context from child components"
];
@pubudu-ranasinghe
pubudu-ranasinghe / Items.js
Created November 2, 2019 16:13
react-context-example-05
import React, { useState } from "react";
export function NewItem({ add }) {
const [text, setText] = useState("");
return (
<div className="Item">
<input
type="text"
placeholder="New Task"