在做侧边栏导航动态加载时,需要用到vue的组件递归,最开始打算直接写函数递归来解决问题,结果没什么卵用,越写越复杂。直接上代码
给组件name值
- <script>
- export default {
- name: "SideItem",
- }
- <script>
直接在组件中调用即可
- <template>
- <div>
- <SideItem :tree="item"></SideItem>
- <div>
- <template>
注意不要在组件内定义vue.components,否则会报错
父组件 ( 正常引入调用 )
- <template>
- <div>
- <moduleSun :chartData="item" v-for="(item,index) in chartData" :key="index" />
- </div>
- </template>
-
- <script>
- import moduleSun from '@/views/moduleSun'
- export default {
- components: { moduleSun },
- data() {
- return {
- chartData: [{
- nameCN: '111',
- nameEN: 'en111',
- remarks: '我是111',
- children: [{
- nameCN: '222',
- nameEN: 'en222',
- remarks: '我是222',
- children: [{
- nameCN: '222-111',
- nameEN: 'en222-111',
- remarks: '我是222-111',
- }],
- }, {
- nameCN: '333',
- nameEN: 'en333',
- remarks: '我是333',
- }],
- }],
- }
- },
- }
- </script>
子组件 ( 组件中需定义name名称 )
- <template>
- <div class="chart-layout">
- <div class="chart-main">
- <div>{{chartData.nameCN}}</div>
- <div class="chart-en">{{chartData.nameEN}}</div>
- <div class="chart-remarks">{{chartData.remarks}}</div>
- </div>
- <moduleSun :chartData="item" v-for="(item,index) in chartData.children" :key="index" />
- </div>
- </template>
-
- <script>
- export default {
- name: 'moduleSun',
- props: {
- chartData: {
- type: Object,
- default: () => {
- return {}
- }
- },
- },
- }
- </script>
-
- <style lang="less" scoped>
- .chart-main {
- width: 100px;
- border: 1px solid #000;
-
- > div {
- margin-top: 5px;
- }
- }
- </style>