#javascript #reactjs #react-hooks #next.js
#javascript #reactjs #реагирующие хуки #next.js
Вопрос:
Я могу изменить текст с помощью useState(), обратившись за помощью по динамическому обновлению CSS измененного текста.
JS:
const [verifyAttendance, setViewAttendance] = useState("Verify Class Attendance")
<div className="verify-class-attendance">
<span onClick={() => setViewAttendance('View Attendance')}>{verifyAttendance}</span>
<ForwardArrow />
</div>
CSS:
verify-class-attendance {
background-color: #f8f8f8;
display: flex;
justify-content: space-between;
align-items: center;
height: 51px;
font-size: 12px;
font-weight: 600;
color: #fc8b4c;
letter-spacing: 0.5px;
padding-left: 35px;
padding-right: 35px;
position: relative;
top: -16px;
margin-bottom: 2px;
}
Комментарии:
1. Вы можете передать className в качестве реквизита
2. В зависимости от состояния, присвоите компоненту, который вы хотите стилизовать, другое имя класса. Таким образом, вы сможете изменить стиль
3. Примечание: перед селектором в вашем CSS отсутствует буква a
.
:.verify-class-attendance
.
Ответ №1:
Вы могли бы использовать className в качестве состояния
const [verifyAttendance, setViewAttendance] = useState("Verify Class Attendance")
const [dynamicClassName, setDynamicClassName] = useState(null)
useEffect(() => {
setDynamicClassName({
'View Attendance': 'view-attendance',
'Verify Class Attendance': 'verify-class-attendance'
}[verifyAttendance])
}, [verifyAttendance])
<div className={dynamicClassName}>
<span onClick={() => setViewAttendance('View Attendance')}>{verifyAttendance}</span>
<ForwardArrow />
</div>
Ответ №2:
Вы могли бы сделать :
<div className=`${booleanState} ? "verify-class-attendance" : "other-css"`></div>
Вы бы использовали новое состояние так же, как и с предыдущим