React JS, изменение стиля элемента после поставленной галочки в checkbox
Написал небольшой проект из нескольких компонентов, который по условию надо сделать с хуками. Здесь привожу только один компонент, который не могу доделать.
Есть таблица с четырьмя колонками: два поля, кнопка и чекбокс. Надо, чтобы при проставлении галочки в чекбоксе менялся стиль всей строки, например чтобы она меняла цвет. Понимаю, что для этого в <tr>
надо поставить что-то типа
style={{color: isActive 'red' : 'black' }}
Но запутался.
Данные tasksData
выглядят как
const tasksData = [
{ id: 1, description: 'qqqqq', city: 'NY'},
{ id: 2, description: 'wwwww', city: 'Paris'},
{ id: 3, description: 'rrrrr', city: 'Moscow'}
]
Сам компонент:
const TaskTable = props => {
const handleDeleteTask = id => {
let answer = window.confirm('Are you sure?')
if (answer) {
props.deleteTask(id)
}
}
const [checkedState, setCheckedState] = useState(
new Array(props.tasks.length).fill()
);
const handleOnChange = (position) => {
const updatedCheckedState = checkedState.map((item, id) =>
id === position ? !item : item
);
}
return (
<table>
<thead>
<tr>
<th>Description</th>
<th>City</th>
<th>Delete</th>
<th>Done</th>
</tr>
</thead>
<tbody>
{props.tasks.length > 0 ? (
props.tasks.map(task => (
<tr key={task.id}>
<td>{task.description }</td>
<td>{task.city}</td>
<td>
<button type="button"
className="button muted-button"
onClick={() => handleDeleteTask(task.id)}
>
Delete</button>
</td>
<td>
<input
type="checkbox"
checked={checkedState[task.id]}
onChange={() => handleOnChange(task.id)}
/>
</td>
</tr>
))
) : (
<tr>
<td colSpan={4}>No tasks more</td>
</tr>
)}
</tbody>
</table>
)}
export { TaskTable };
Источник: Stack Overflow на русском