You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В итоге реф selectAsync:u11b99ae2e0e3b2 записывается в $refs к b-dummy, который создан внутри async render. Потому в root компоненте не получается его зарезолвить.
Причина в следующем: внутри async render withCtx теряет ссылку на контекст (currentRenderingInstance), потому слоты создаются с ссылкой на инстанс компонента в рамках которого они вставлены.
Чтобы полечить эту проблему необходимо кэшировать currentRenderingInstance, т.е. завернуть коллбэк функцию для renderList в некое подобие withCtx.
Фикс в #1091 сломался в версии Vue 3.4.7. Ломается обычный v-for, из-за того что мы привязываем currentRenderingInstance внутри renderList.
Сейчас проблему решили иначе: #1487. Сделали так, чтобы v-ref всегда был пропсом.
У нас остается по прежнему две проблемы в случае асинк рендера:
Фикс не будет работать для кейсов с v-func = someExpression
Корневые узлы компонентов имеют ref = null, так как потерян контекст currentRenderingInstance (ломает ли это что-то на практике не известно, но это отличается от синхронного рендера).
issues/1090
npx webpack --watch --env public-path=//
npx static ./dist/client
На селект, размещенный в слоте default компонента b-dummy, нет рефа.
Если компонент сделать функциональным, то рефы появляются, это связано с тем, что у vnode функциональных компонентов есть проп

ref
и свойствоref
:У обычных компонентов свойство

ref
не задано:The text was updated successfully, but these errors were encountered: