В 2.0.0-rc.1 такая конструкция, как
<p>Count: {{$refs.components && $refs.components.length}}</p>
<sub-component v-for="item in items" ref="components">
больше не работает (счетчик остается на начальном значении, даже если items
и, следовательно, количество компонентов изменяется). В v1 массивы $ refs будут обновляться реактивно.
Я не уверен, ошибка это или особенность, но в # 2873, похоже, об этом не упоминается.
Это задумано - причина в том, что $refs
теперь регистрируются / обновляются во время самого процесса рендеринга. Не рекомендуется полагаться на $refs
в шаблонах, поскольку они предназначены только для программного доступа в JavaScript.
Я обновил # 2873, чтобы включить это.
@ yyx990803 означает ли это, что использование this.$refs.*
в свойствах computed
также перестанет работать в версии 2 или это просто использование в шаблонах? Должен ли я решать все это с помощью кастомных событий?
В настоящее время я передаю результаты проверки от детей родителю следующим образом.
вы можете использовать this.$forceUpdate()
и setTimeout
для повторного рендеринга представления, когда вы обновляете данные и обнаруживаете, что $refs
не обновляется реактивно.
this.fetchSomeShit()
.then((data) => {
this.data = data
setTimeout(() => {
this.$forceUpdate()
})
})
используйте setTimeout
чтобы убедиться, что данные были предоставлены в том, что они говорят, очередь задач vue
Самый полезный комментарий
@ yyx990803 означает ли это, что использование
this.$refs.*
в свойствахcomputed
также перестанет работать в версии 2 или это просто использование в шаблонах? Должен ли я решать все это с помощью кастомных событий?В настоящее время я передаю результаты проверки от детей родителю следующим образом.