前提・実現したいこと
2つのinputと1秒毎に増えていく数値を表示するカウンターなどがあります。
下記はデモです。
demo
1つ目のinputにhoge
を入力すると、2つ目のinputが入力できるようになります。
2つ目のinputにfuga
を入力すると、カウンターの下のボタンが押せるようになります。
また、2つのinputの入力値をカウンターの上に表示します。
以下の問題を解決したいです。
- 上記デモではinputにテキストを入力しても、カウンター上に入力値が表示されないです。
- また、2つ目のinputに
fuga
を入力しても、カウンター下のボタンが押せるようにならないです。
該当のソースコード
カスタムフックuseCount.js
js
1export const useCount = () => { 2 const [text1, setText1] = useState(""); 3 const input1 = ({ target: { value } }) => setText1(value); 4 const [text2, setText2] = useState(""); 5 const input2 = ({ target: { value } }) => setText2(value); 6 7 const [count, setCount] = useState(0); 8 useEffect(() => { 9 const countUp = () => setCount((count) => count + 1); 10 const timerID = setInterval(countUp, 1000); 11 return () => clearInterval(timerID); 12 }, []); 13 14 return { input1, text1, input2, text2, count }; 15};
試したこと
カウンター周りのコンポーネントを切り分けずに、input
群と同じコンポーネントに含めると機能しました。
下記はそのデモです。
demo2
しかし、カウンター周りのコンポーネントはコード量が多くなるので、カウンター周りのコンポーネントは切り分けたいです。