Что вам нужно, это слоты.Смотрите документы здесь.Как вы увидите, слоты позволяют родительскому компоненту передавать элементы DOM в дочерний компонент.Базовый взгляд на них может выглядеть следующим образом:
//ChildComponent.vue
<template>
<div>
<p>I'm the child component!</p>
<!-- Content from the parent gets rendered here. -->
<slot></slot>
</div>
</template>
И затем вы вставляете контент в теги слотов следующим образом:
//ParentComponent.vue
<template>
<div>
<child-component>
<p>I'm injected content from the parent!</p>
<p>I can still bind to data in the parent's scope, like this! {{myVariable}}</p>
</child-component>
</div>
</template>
Слоты могут быть довольно сложными и выполнять многовещи, на которые стоит обратить внимание.
В дополнение к вашему нижеследующему комментарию вы можете поместить v-for в сетку.Это выводит то, что вы, кажется, после.Я ввел вход, чтобы принять количество пользователей в столбцах, как вы сказали, и затем он отображает это количество ячеек.Конечно, вы можете использовать несколько слотов, именованных слотов и слотов с заданной областью, но я оставлю вам на ваше усмотрение, как вы расширите это.
//Grid.vue
<template>
<div class="cell">
<slot></slot>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
.cell {
height: 40px;
width: 60px;
border: 1px solid gray;
}
</style>
и родительский:
<template>
<div class="content">
<label>Enter number of columns</label>
<input v-model.number="col" type="number">
<Grid v-for="(n, i) in col" :key="i" >
<div>Child{{n}} Cell{{n}}</div>
</Grid>
</div>
</template>
<script>
import Grid from '@/components/admin/Grid'
export default {
layout: 'admin',
components: {
Grid
},
data: () => ({
col: 4
}),
}
</script>