Skip to content

Instantly share code, notes, and snippets.

@nicovalencia
Created March 4, 2019 19:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nicovalencia/25dca57e5b92a5af7cfb7bd029cea3a8 to your computer and use it in GitHub Desktop.
Save nicovalencia/25dca57e5b92a5af7cfb7bd029cea3a8 to your computer and use it in GitHub Desktop.
React HOC Context Example
import React from 'react';
const DataContext = React.createContext();
class DataProvider extends React.Component {
state = {
items: [
"Thing 1",
"Thing 2",
"Thing 3",
],
};
render() {
return (
<DataContext.Provider value={{
items: this.state.items,
}}>
{this.props.children}
</DataContext.Provider>
);
}
}
const withData = (Component) => {
return (props) => (
<DataContext.Consumer>
{context => <Component {...props} data={context} />}
</DataContext.Consumer>
);
};
const Main = () => (
<div>
<TodoList />
</div>
);
const TodoList = withData(
({ data }) => (
<ul>
{data.items.map(item =>
<li key={item}>{item}</li>
)}
</ul>
)
);
class App extends React.Component {
render() {
return (
<DataProvider>
<h1>React HOC Context Example</h1>
<Main />
</DataProvider>
);
}
}
export default App;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment