Вы не можете получить доступ к ссылкам из ловушки created
, потому что дочерние компоненты / элементы еще не были созданы;вместо этого доступ с крюка mounted
:
Vue.component('foo', {
template: '<div>foo</div>',
created() {
console.log('foo created')
}
})
new Vue({
el: '#app',
created() {
console.log('parent created: $refs.foo is null?', this.$refs.foo == null)
},
mounted() {
console.log('parent mounted: $refs.foo is null?', this.$refs.foo == null)
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<foo ref="foo"></foo>
</div>
Причина, по которой вы получаете несоответствие между выводом console.log
, показывающим, что компоненты есть, но когда вы получаете доступ к одному из компонентов, это не так. возможно, потому что браузер лениво оценивает свойства this.$refs
только после того, как вы щелкнете стрелку, чтобы развернуть свойства объекта, и к тому времени, когда он будет оценен, дочерние компоненты уже созданы.