35.Vue 递归组件

作者: 圆梦人生 | 来源:发表于2018-11-16 14:52 被阅读5次

    在Vue中组件可以在模板内部递归调用自己,需要给组件设置name值,需要注意的是:必须限定条件,不能无限递归,否则会内存溢出(Error in nextTick: "RangeError: Maximum call stack size exceeded")。

    效果

    image.png

    案例:

    index.vue

    <template>
      <div>
          <!-- 使用子组件 -->
          <subcmp :Counter="1"></subcmp>
      </div>
    </template>
    <script>
      // 导入子组件
      import subcmp from './subcmp'
      export default {
          // 注册
          components: {
             subcmp
          },
          data(){
            return {}
          }  
      } 
    </script>
    

    subcmp.vue

    <template>
      <div>
          子组件,当前Counter值: {{Counter}} <br/>
          <!-- 递归调用自身,如果Counter大于10则停止递归调用 -->
          <subcmps:Counter="Counter + 1" v-if="Counter < 10"></subcmps>
      </div>
    </template>
    <script>
    export default {
      // 必须定义name,组件内部才能递归调用
      name: 'subcmps',
      data(){
        return {}
      },
      // 接收外部传入的值
      props: {
         Counter: {
          default: 1
        }
      }
    }
    </script>
    

    相关文章

      网友评论

      • alex夏夜:这种业务适合用v-for
        圆梦人生:@alex夏夜 是的,这个案例只是说明vue递归组件的使用,递归组件场景更适合 级联下拉、树形菜单等场景

      本文标题:35.Vue 递归组件

      本文链接:https://www.haomeiwen.com/subject/uzdmfqtx.html