前提
React.jsでクリックイベントによって要素の色を変更する方法をご教示いただけないでしょうか。
下記はデモです。
デモではボタンを押すことで、背景の色が切り替わります。
実現したいこと
背景ではなく、ボタンの下にあるボックスの色を切り替えたいです。
現状は
jsx
1document.body.style.background = "black";
と記述しており、body
の部分をobject
に置き換えられるとボックスの色が変更できるかと思いますが、
jsx
1const object = document.getElementById('ボックス');
と記述すると、下記のエラーが表示されます。
オブジェクトは 'null' である可能性があります。
なぜ上記のエラーが出るかについては、「レンダー前なので要素は仮想DOMにしかなく実DOMにはまだ要素が無いため」という認識でおります。
ソースコード
jsx
1function App() { 2 const [changed, setChanged] = useState(false); 3 4 const changeColor = () => { 5 if (changed === false) { 6 document.body.style.background = "black"; 7 setChanged(true); 8 return; 9 } 10 document.body.style.background = ""; 11 setChanged(false); 12 }; 13 14 return ( 15 <> 16 <button onClick={changeColor}>ボックスの色を変更</button> 17 <hr /> 18 <Div /> 19 </> 20 ); 21} 22 23const Div = styled.div` 24 background: red; 25 width: 100px; 26 height: 100px; 27`;
調べたこと
「react getelementbyid 代わり」や「react getelementsbyclassname 代替」などで検索したのですが、有効なページが見つけられませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。