如何在HTML里面使用Vue组件(包含递归组件)

在讲解之前,大家可以看一下我的资源里的一个demo(产品流程态势图),里面就是在html里面使用的vue和vue组件,大家可以参考一下,如果有什么疑问,可以评论留言,我会及时的回复大家!

上期我们讲解了如何在html里面引入vue.js,这一期我们来讲解一下如何在html里使用vue组件,防止代码臃肿,方便我们维护,下面是一般组件在html里的示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./vue.js"></script>
  </head>
  <body>
    <!-- 创建一个根元素 -->
    <div class="home" id="home">
      <!-- 使用卡片组件 -->
      <card-Bg :card-Item="cardItem"></card-Bg>
    </div>


    <!-- 卡片组件开始 -->
    <template type="text/x-template" id="cardBg">
      <!-- 子组件的最外层必须有一个根元素 -->
      <div>
        <div>{{cardItem.name}}</div>
        <div>{{cardItem.id}}</div>
      </div>
    </template>
    <!-- 卡片组件结束 -->


    <script>
      Vue.component("cardBg", {
        template: "#cardBg",
        props: ["cardItem"],
        data() {
          return {};
        },
        methods: {},
      });
      // 将vue挂载到id为home的根元素上
      var vm = new Vue({
        el: "#home",
        data() {
          return {
            cardItem: {
              name: "子组件1",
              id: "1",
            },
          };
        },
        created() {},
      });
    </script>
  </body>
</html>

上面有两个注意点:

1、子组件必须有一个根元素,如图;

 2、组件使用时的标签名字和传参时使用的命名不能用驼峰,需要用“-”连接,如图;

 以上是vue组件在html中的使用,下面分享一个知识点:递归组件,首先说一下递归组件的使用场景,当接口返回的数据是一个树状结构时,我们需要使用递归组件将树状结构深层遍历出来,这个大家也可以参考我的资源里的“产品流程态势图”左侧树结构,下面是简单的代码实现:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./vue.js"></script>
  </head>
  <body>
    <!-- 创建一个根元素 -->
    <div class="home" id="home">
      <!-- 使用递归卡片组件 -->
      <card-Bg :card-Item="cardItem"></card-Bg>
    </div>


    <!-- 递归卡片组件开始 -->
    <template type="text/x-template" id="cardBg">
      <!-- 子组件的最外层必须有一个根元素 -->
      <div>
        <div v-for="(item,index) in cardItem.children" :key="item.label">
          {{item.label}}
          <div v-if="item.children">
            <card-Bg :card-Item="item"></card-Bg>
          </div>
        </div>
      </div>
    </template>
    <!-- 递归卡片组件结束 -->


    <script>
      Vue.component("cardBg", {
        template: "#cardBg",
        props: ["cardItem"],
        data() {
          return {};
        },
        methods: {},
      });
      // 将vue挂载到id为home的根元素上
      var vm = new Vue({
        el: "#home",
        data() {
          return {
            cardItem: {
              label: "AM6.100.423",
              children: [
                {
                  label: "AM6.101.431",
                  children: [
                    {
                      label: "AM6.102.431",
                      children: [
                        {
                          label: "AM6.103.431",
                        },
                      ],
                    },
                  ],
                },
                {
                  label: "AM6.201.431",
                  children: [
                    {
                      label: "AM6.202.431",
                      children: [
                        {
                          label: "AM6.203.431",
                        },
                      ],
                    },
                    {
                      label: "AM6.202.432",
                      children: [
                        {
                          label: "AM6.203.432",
                        },
                        {
                          label: "AM6.204.432",
                        },
                      ],
                    },
                  ],
                },
                {
                  label: "AM6.301.431",
                },
              ],
            },
          };
        },
        created() {},
      });
    </script>
  </body>
</html>

 希望本次的分享对大家有所帮助!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue中,组件是指一个组件在其自身模板中调用自身的情况。为了在Vue中实现组件,您需要使用 Vue.component() 方法来定义组件并在组件使用 <template> 元素来定义组件的内容。 下面是一个简单的组件的示例: ```html <template> <div class="item"> {{ node.name }} <ul v-if="node.children && node.children.length"> <tree-item v-for="child in node.children" :key="child.id" :node="child"></tree-item> </ul> </div> </template> <script> export default { name: 'TreeItem', props: { node: Object }, components: { TreeItem: this } } </script> ``` 在这个示例中,我们定义了一个名为 TreeItem 的组件,并将其作为子组件归调用。在归调用时,我们需要使用 :node 属性将当前节点传给子组件。 在父组件中,您可以像下面这样使用组件: ```html <template> <div class="tree"> <tree-item :node="root"></tree-item> </div> </template> <script> import TreeItem from './TreeItem.vue' export default { name: 'Tree', components: { TreeItem }, data() { return { root: { name: 'root', children: [ { name: 'child1', children: [ { name: 'grandchild1' }, { name: 'grandchild2' } ] }, { name: 'child2' } ] } } } } </script> ``` 在这个示例中,我们定义了一个名为 Tree 的父组件,并将归子组件 TreeItem 引入。在父组件的模板中,我们将 root 对象传给 TreeItem 组件,然后 TreeItem 组件将自身归调用以渲染整个树形结构。 希望这可以帮助您理解如何在Vue使用归子组件的方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海豹先生_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值