У меня есть этот функциональный компонент:
const PriorityInput = () => {
const [isActive, setIsActive] = useState({
taskPriorityLow: false,
taskPriorityMedium: false
});
const onPriorityClick = name => {
Object.keys(isActive).forEach(key =>
key === name ? setIsActive({ ...isActive, [key]: true }) : setIsActive({ ...isActive, [key]: false })
);
};
return (
<div className="task-priority-input-container">
<label className="task-priority-input-label">Priority</label>
<span
className={
isActive.taskPriorityLow
? "task-priority-button task-priority-low-active"
: "task-priority-button task-priority-low"
}
onClick={() => onPriorityClick("taskPriorityLow")}
>
LOW
</span>
<span
className={
isActive.taskPriorityLow
? "task-priority-button task-priority-medium-active"
: "task-priority-button task-priority-medium"
}
onClick={() => onPriorityClick("taskPriorityMedium")}
>
MEDIUM
</span>
</div>
);
};
export default TaskForm;
, однако, когда я нажимаю на span
, его стиль не меняется.
Из аналогичных вопросов я понял, что вызов setIsActive()
с распространенный объект вызовет повторное рендеринг.