Polyfill for the proposed Inferno context API
npm install create-inferno-context> Polyfill for Inferno proposed React context API
``sh`
npm i create-inferno-context --save
You'll need to also have inferno and prop-types installed.
`js`
const Context = createInfernoContext(defaultValue);
//
// ...
//
`js
import { Component, render } from 'inferno';
import createInfernoContext from './lib/';
// Pass a default theme to ensure type correctness
const ThemeContext = createInfernoContext('light');
class ThemeToggler extends Component {
state = { theme: 'light' };
render() {
return (
// Pass the current context value to the Provider's value prop.
// Changes are detected using strict comparison (Object.is)
onClick={() => {
this.setState(state => ({
theme: state.theme === 'light' ? 'dark' : 'light'
}));
}}
>
Toggle theme
{this.props.children}
);
}
}
class Title extends Component {
render() {
return (
// The Consumer uses a render prop API. Avoids conflicts in the
// props namespace.
{theme => (
{this.props.children}
)}
);
}
}
class Emoji extends Component {
render() {
return (
{theme => (
style={{
fontSize: '35px',
background: 'white',
height: '40px',
width: '40px'
}}
>
{theme === 'light' ? '⚡️' : '🕶'}
function App() {
return (
);
}
let container = document.getElementById('container');
if (!container) {
throw new Error('missing #container');
}
render(
`
You cannot pass children types aren't valid Inferno vNode:
`js``