кусок кода:
const [statePhones, setStatePhone] = useState(statePhonesObject);
const handleChangeSize = (e) => {
const choosedSizeID = Number(e.target.id);
let newStatePhones = statePhones;
const _phone = newStatePhones[choosedSizeID].phone;
const _isActive = newStatePhones[choosedSizeID].isActive;
newStatePhones[choosedSizeID] = { id: Number(choosedSizeID), phone: _phone, isActive: !_isActive }
setStatePhone(newStatePhones)
}
и сам рендер:
<ul className="phones-list" onClick={(e) => handleChangeSize(e)}>
{phoneSizeList.map((phone, index) => (
<div className="phone-block" key={index} id={index}>
{statePhones[index].isActive ? <CircleOptionChoose id={index} /> : <CircleOptionEmpty id={index} />}
<li id={index}>{phone}</li>
</div>
))}
</ul>
Проблема в том, что в хендлере все ок, получаю айди, меняю стейт
но перерисовка не происходит
Не подскажете из-за чего это может быть ?
Ошибки вроде нет
попробуй через коллбек изменять стейт
а в чем задача? Кликами выделять номера телефонов?
а как ты идентифицируешь перерендер? Что должно поменяться?
{statePhones[index].isActive ? <CircleOptionChoose id={index} /> : <CircleOptionEmpty id={index} />} рисуется чекбокс
полностью кастомный чексбокс? А точно не радиобаттон тебе нужен?
это обычные svg (закрашен и пустой)
Обсуждают сегодня