Skip to content

Instantly share code, notes, and snippets.

@chathuranga94
Last active July 20, 2019 10:45
Show Gist options
  • Save chathuranga94/4a26300fd33d4d35ae1def18b61369e5 to your computer and use it in GitHub Desktop.
Save chathuranga94/4a26300fd33d4d35ae1def18b61369e5 to your computer and use it in GitHub Desktop.
import React, { useState } from 'react';
const languages = { en: 'en', fr: 'fr' };
const initialTheme = { colour: 'blue', lang: languages.en };
const { Provider: AppProvider, Consumer: AppConsumer } = React.createContext(initialTheme);
const App = () => {
const [theme, setTheme] = useState(initialTheme);
const setLanguage = (lang) => {
setTheme({ ...theme, lang: lang });
}
return (
<AppProvider value={theme}>
<button onClick={() => setLanguage(languages.en)}>English</button>
<button onClick={() => setLanguage(languages.fr)}>French</button>
<Menu />
</AppProvider>
);
}
const Menu = () => <MenuItem />;
const MenuItem = () =>
<AppConsumer>
{ value =>
<div>
<p>Theme colour: {value.colour}</p>
<p>Locale: {value.lang}</p>
</div>
}
</AppConsumer>
export default App;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment