react (context)
by Yury
HTML
<div id="app"></div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
div {
user-select: none;
}
button {
color: #eee;
background: #20262E;
padding: 10px 16px;
border: none;
border-radius: 3px;
cursor: pointer;
}
button.delay {
background: #20767E;
}
div > button + button {
margin-left: 24px;
}
React
const {useEffect, useState} = React;
/* const NumberContext = React.createContext(); */
const NumberContext = React.createContext({num: 0, setNum: () => {}});
function App() {
const [num, setNum] = useState(45);
const reset = () => setNum(0);
return (
<NumberContext.Provider value={{num, setNum, reset}}>
<div>
<Display />
</div>
</NumberContext.Provider>
);
}
function Display() {
return (
<NumberContext.Consumer>
{value => <React.Fragment>
<div onClick = {() => { value.setNum(value.num + 1)}} >
The answer to the question is {value.num}.
</div>
<br/>
<button onClick = { () => {value.reset()} }>reset</button>
</React.Fragment>}
</NumberContext.Consumer>
);
}
/* ReactDOM.render(<App />, document.querySelector("#app")) */
const root = ReactDOM.createRoot(document.getElementById("app"));
root.render(<App />);