Skip to content

Instantly share code, notes, and snippets.

View benkissi's full-sized avatar
💪
Working

Ben Kissi benkissi

💪
Working
View GitHub Profile
<AppContext.Provider value={{name: 'Ben Kissi'}}>
{/* Put child components here */}
</AppContext.Provider>
<AppContext.Consumer>
{({name})=> (<p>Hello {name}</p>)}
</AppContext.Consumer>
@benkissi
benkissi / app_context.js
Last active April 15, 2019 13:08
Context blog
import React, { Component } from "react";
const AppContext = React.createContext();
class AppProvider extends Component {
constructor(props) {
super(props);
this.state = {
todos: []
};
this.addTodo = this.addTodo.bind(this);
this.completed = this.completed.bind(this);
addTodo(todo) {
const { todos } = this.state;
const newTodo = {
id: Math.floor(Math.random() * (1000 - 1)) + 1,
todo: todo,
createdAt: Date.now(),
completed: false
};
this.setState({
todos: todos.concat(newTodo)
completed(id) {
const { todos } = this.state;
todos.forEach(todo => {
if (todo.id === id) {
todo.completed = !todo.completed;
}
});
this.setState({
todos: todos
});
render() {
return (
<AppContext.Provider
value={{
todos: this.state.todos,
addTodo: this.addTodo,
completed: this.completed
}}
>
{this.props.children}
const AppConsumer = AppContext.Consumer;
export { AppProvider, AppConsumer };
const rootElement = document.getElementById("root");
ReactDOM.render(
<AppProvider>
<TodoApp />
</AppProvider>,
rootElement
);
@benkissi
benkissi / context_blog_gist_1.js
Last active April 15, 2019 19:35
Context Code
const AppContext = React.createContext('hello world');
@benkissi
benkissi / todo.js
Last active April 15, 2019 19:55
Context blog
import React, { Component } from "react";
import { AppConsumer } from "./app-context";
import { Grid, Button, Input } from "semantic-ui-react";
const TodoInput = props => {
let todo;
return (
<AppConsumer>
{({ addTodo }) => (
<form