Вам не нужен хук жизненного цикла created()
, чтобы достичь желаемого. Есть несколько вещей, которые нужно прояснить:
То, что вы используете, на самом деле называется слоты с областью действия . Они полезны, потому что, в отличие от использования слотов по умолчанию и именованных слотов, родительский компонент не может получить доступ к данным своих дочерних компонентов.
То, что вы называете Child на самом деле является родительским компонентом.
Child. vue компонент должен выглядеть примерно так:
<template>
<div>
<main>
<slot :data="data1" :loading="loading1" />
</main>
</div>
</template>
<script>
export default {
name: 'Page',
data () {
return {
data1: 'foo',
loading1: 'bar'
}
}
}
</script>
В компоненте Parent. vue вы можете получить доступ к данным вышеупомянутого компонента следующим образом:
<template>
<child>
<template v-slot="slotProps">
{{ slotProps.data }},
{{ slotProps.loading }}
</template>
</child>
</template>
<script>
import Child from '@/components/Child.vue'
export default {
components: { Child }
}
</script>
Или вы также можете destruct объекты на лету выглядят следующим образом:
<template>
<child>
<template v-slot="{data, loading }">
{{ data }},
{{ loading }}
</template>
</child>
</template>
<script>
import Child from '@/components/Child.vue'
export default {
components: { Child }
}
</script>
Это чистый способ доступа к данным дочернего компонента из родительского элемента с использованием слотов с областями видимости.