Skip to content

Instantly share code, notes, and snippets.

@etienne-dldc
Created September 10, 2017 09:38
Show Gist options
  • Save etienne-dldc/43c4d024ce6a8c841e494e77191012a0 to your computer and use it in GitHub Desktop.
Save etienne-dldc/43c4d024ce6a8c841e494e77191012a0 to your computer and use it in GitHub Desktop.
16 - Context Provider
<div id="app"></div>
class LocaleProvider extends React.Component {
getChildContext() {
return { locale: "fr" };
}
render() {
return this.props.children;
}
}
LocaleProvider.childContextTypes = {
locale: PropTypes.string
};
class InjectLocale extends React.Component {
render () {
return this.props.children(this.context.locale);
}
}
InjectLocale.contextTypes = {
locale: PropTypes.string
}
const LocalizedHello = () => (
<InjectLocale>
{(locale) => (
locale === 'fr' ? (
<span>Bonjour !</span>
) : (
<span>Hello !</span>
)
)}
</InjectLocale>
)
const App = () => (
<LocaleProvider>
<LocalizedHello />
</LocaleProvider>
);
ReactDOM.render(
<App/>,
document.getElementById('app')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.5.10/prop-types.js"></script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment