Reactで条件によってclassNameの値を変更する方法をメモ。
サンプルコード
まずは対応前です。
以下のようなBtn.jsxで、クリック時にスタイルを変更したいとします。
import './Btn.css'
function Btn() {
return (
<button className="button">ボタン</button>
)
}
export default Btn
Btn.cssは以下の通りです。
.button {
appearance: none;
padding: 10px 20px;
border: none;
border-radius: 5px;
color: white;
background: purple;
cursor: pointer;
}
useStateでボタンの状態を管理するisCurrentを用意して、その値に応じてis-currentというclassを付与するようにします。
import { useState } from 'react'
import './Btn.css'
function Btn() {
const [isCurrent, setIsCurrent] = useState(false);
function handleChange() {
setIsCurrent(!isCurrent);
}
return (
<button
className={`button ${isCurrent ? "is-current" : ""}`}
onClick={handleChange}
>ボタン</button>
)
}
export default Btn
CSSで.is-currentが付与されたときのスタイルを用意します。
.button {
appearance: none;
padding: 10px 20px;
border: none;
border-radius: 5px;
color: white;
background: purple;
cursor: pointer;
}
.button.is-current {
background: tomato;
}
これで条件に応じてclassNameの値を変更することができました。
対応後のデモページ
コメントが承認されるまで時間がかかります。