Open shining-mind opened 9 months ago
В итоге реф selectAsync:u11b99ae2e0e3b2
записывается в $refs
к b-dummy
, который создан внутри async render. Потому в root компоненте не получается его зарезолвить.
Причина в следующем: внутри async render withCtx
теряет ссылку на контекст (currentRenderingInstance), потому слоты создаются с ссылкой на инстанс компонента в рамках которого они вставлены.
Чтобы полечить эту проблему необходимо кэшировать currentRenderingInstance, т.е. завернуть коллбэк функцию для renderList
в некое подобие withCtx
.
Fixed in #1091
Фикс в #1091 сломался в версии Vue 3.4.7. Ломается обычный v-for, из-за того что мы привязываем currentRenderingInstance внутри renderList.
Сейчас проблему решили иначе: #1487. Сделали так, чтобы v-ref всегда был пропсом.
У нас остается по прежнему две проблемы в случае асинк рендера:
issues/1090
npx webpack --watch --env public-path=//
npx static ./dist/client
На селект, размещенный в слоте default компонента b-dummy, нет рефа.
Если компонент сделать функциональным, то рефы появляются, это связано с тем, что у vnode функциональных компонентов есть проп
ref
и свойствоref
:У обычных компонентов свойство
ref
не задано: