У меня есть простой компонент Preact, который содержит флажок:
class Cb extends Component {
render() {
return (<div>Checkbox: <input type="checkbox" /></div>);
}
}
В родительском Component
это Cb
условно добавляется следующим образом:
{ this.state.show ? <Cb /> : <div>Nothing</div> }
Теперь о странной части: если вы выполните следующие действия:
- Установите флажок
- Переключить
state.show
в родительском Component
, удалив Cb
- Снова переключите
state.show
в родительском Component
, создав новый Cb
Тогда вновь созданный флажок все еще отмечен!
Как это возможно? Флажок действительно удален и создан совершенно новый экземпляр Cb
(я проверил, используя сообщения журнала в конструкторе). Где хранится это состояние?
Дополнительная странность: В React поведение отличается (там, вновь созданный флажок не отмечен).
Вот два Codepens с одинаковым кодом в Preact и React , где вы можете сравнить поведение.