hooksのuseContextを使ってみる
めちゃ簡単なカウンター作ってみた。
https://codesandbox.io/s/condescending-turing-6gtgf
ソース
import React, { useState, useContext, createContext, useCallback } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
const Counter = createContext();
function App() {
const [count, setCount] = useState(0);
const increment = useCallback(() => setCount(count + 1), [count]);
const decrement = useCallback(() => {
if (count > 0) setCount(count - 1);
}, [count]);
return (
<div className="App">
<Counter.Provider
value={{
count,
increment,
decrement
}}
>
<Child />
</Counter.Provider>
</div>
);
}
const Child = () => {
const { count, increment, decrement } = useContext(Counter);
return (
<>
{count}
<button onClick={increment}>increment</button>
<button onClick={decrement}>decrement</button>
</>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
これで簡単にバケツリレー回避できるんだね。
createContextについて全然知らなくてhooks触ってて気がついた。
これから使っていってみよう。