I'm following Advanced React Component Patterns on egghead and
I'm having a lot of problems
typing the function inside ToggleContext.Consumer :
interface IContextProps {
on: boolean;
toggle?: (flag: boolean) => void;
}
const ToggleContext = React.createContext<IContextProps | undefined>(undefined)
class Toggle extends React.Component {
static On = ({children}:{children:React.ReactNode}) => (
<ToggleContext.Consumer>
{({on}) => (on ? children : null)}
</ToggleContext.Consumer>
)
state = {on: false}
toggle = () =>
this.setState(
({on}) => ({on: !on}),
() => this.props.onToggle(this.state.on),
)
render() {
return (
<ToggleContext.Provider
value={{on: this.state.on, toggle: this.toggle}}
>
{this.props.children}
</ToggleContext.Provider>
)
}
}
How is the way please?
UPDATE
I'd like to know how to type the function inside ToggleContext.Consumer
<ToggleContext.Consumer>
{({on}) => (on ? children : null)}
</ToggleContext.Consumer>