«изменить», а не «щелкнуть»
Ну, во-первых, мне нужно смоделировать «изменение», а не «щелчок».Поскольку компонент <Checkbox>
во всей своей полноте имеет только обработчик Change .(этот щелчок приведет к изменению, верно только в том случае, если оно превратилось в настоящий html… sinca, то есть то, что делает <input type="checkbox…>
)
Теперь к основной проблеме:
list.find ('. List-botombar'). Find ('Checkbox.select-all'). Debug ()
<Checkbox className="select-all" checked={false}…
Давайте запустим изменение:
list.find ('. List-botombar'). Find ('Checkbox.select-all'). Simulate ('change')
У нас все хорошо?
list.find ('. List-botombar'). Find ('Checkbox.select-all'). Debug ()
Да!
<Checkbox className="select-all" checked={true}…
Будет ли при использовании стенографии то же самое?
bottomBar.find ('Checkbox.select-all'). Debug ()
<Checkbox className="select-all" checked={false}…
НЕТ! Так что @konekoya прав, вы должны продолжать поиск по находке, предварительные сокращения не допускаются.(Хм. Ха. Это где-нибудь в документах?!?)
Поможет ли обновление [force]?(Спойлер: №)
bottomBar.update ()
Error: ShallowWrapper::update() can only be called on the root
Fine, затем
list.update () bottomBar.find ('Checkbox.select-all'). debug ()
<Checkbox className="select-all" checked={false}…
Не повезло.
list.instance (). update () TypeError:list.instance (...). update не является функцией list.instance (). forceUpdate () bottomBar.find ('Checkbox.select-all'). debug ()
<Checkbox className="select-all" checked={false}…
(хотя флажок все еще установлен, как и выше, длинный запрос все еще проверяет)
Погружение также не помогает.
tl; dr;Любой ярлык к старому списку - это просто ярлык для устаревших данных.Нужно find()
от корневого элемента снова и снова.
PS Кто-то в курсе от фермента совершенно явно подтверждает это
, когда выиспользуйте .find в v2, вы получаете оболочку, которая обновляется автоматически при обновлении корневой оболочки.В v3 он неизменный, поэтому вам нужно повторно найти его в корне, чтобы увидеть отраженные изменения.