vue-cli4.0引入官方文档Layout示例过程(按需引入)

标签: ant-design-vue  vue  js  

写在前面:建议在了解了如何按需引入一个简单的按钮后再看本篇。

常见报错

  1. [Vue warn]: Unknown custom element: - did you register the component correctly? For recursive components, make sure to provide the “name” option.
  2. [Vue warn]: Unknown custom element: - did you register the component correctly? For recursive components, make sure to provide the “name” option.
  3. [Vue warn]: Unknown custom element: - did you register the component correctly? For recursive components, make sure to provide the “name” option.
  4. [Vue warn]: Error in render: “TypeError: Cannot read property ‘propsData’ of undefined”
  5. TypeError: Cannot read property ‘propsData’ of undefined
  6. …and so on…就不一一列举了

踩完坑后可以确定的是,上面的错误都是因为组件没有正确引入、注册引起的。

直接上代码(包括局部注册全局注册两种方式),引入antd官方文档的一个例子,如下图
在这里插入图片描述

1.局部注册

我是在App.vue里直接改的。

  1. 先将官方示例代码<a-layout> ... </a-layout>部分copy到我们的<div id="app"></div>
  2. 然后再把css样式复制到末尾。这时候你可以看一下浏览器控制台,会有一堆报错,告诉你好多东西没有引入/注册
  3. 因此,最后要做是引入组件、注册组件
<template>
  <div id="app">
    <a-layout id="components-layout-demo-top-side">
        <a-layout-header class="header">
        <div class="logo" />
        <a-menu
            theme="dark"
            mode="horizontal"
            :default-selected-keys="['2']"
            :style="{ lineHeight: '64px' }"
        >
            <a-menu-item key="1">
            nav 1
            </a-menu-item>
            <a-menu-item key="2">
            nav 2
            </a-menu-item>
            <a-menu-item key="3">
            nav 3
            </a-menu-item>
        </a-menu>
        </a-layout-header>
        <a-layout-content style="padding: 0 50px">
        <a-breadcrumb style="margin: 16px 0">
            <a-breadcrumb-item>Home</a-breadcrumb-item>
            <a-breadcrumb-item>List</a-breadcrumb-item>
            <a-breadcrumb-item>App</a-breadcrumb-item>
        </a-breadcrumb>
        <a-layout style="padding: 24px 0; background: #fff">
            <a-layout-sider width="200" style="background: #fff">
            <a-menu
                mode="inline"
                :default-selected-keys="['1']"
                :default-open-keys="['sub1']"
                style="height: 100%"
            >
                <a-sub-menu key="sub1">
                <span slot="title"><a-icon type="user" />subnav 1</span>
                <a-menu-item key="1">
                    option1
                </a-menu-item>
                <a-menu-item key="2">
                    option2
                </a-menu-item>
                <a-menu-item key="3">
                    option3
                </a-menu-item>
                <a-menu-item key="4">
                    option4
                </a-menu-item>
                </a-sub-menu>
                <a-sub-menu key="sub2">
                <span slot="title"><a-icon type="laptop" />subnav 2</span>
                <a-menu-item key="5">
                    option5
                </a-menu-item>
                <a-menu-item key="6">
                    option6
                </a-menu-item>
                <a-menu-item key="7">
                    option7
                </a-menu-item>
                <a-menu-item key="8">
                    option8
                </a-menu-item>
                </a-sub-menu>
                <a-sub-menu key="sub3">
                <span slot="title"><a-icon type="notification" />subnav 3</span>
                <a-menu-item key="9">
                    option9
                </a-menu-item>
                <a-menu-item key="10">
                    option10
                </a-menu-item>
                <a-menu-item key="11">
                    option11
                </a-menu-item>
                <a-menu-item key="12">
                    option12
                </a-menu-item>
                </a-sub-menu>
            </a-menu>
            </a-layout-sider>
            <a-layout-content :style="{ padding: '0 24px', minHeight: '280px' }">
            Content
            </a-layout-content>
        </a-layout>
        </a-layout-content>
        <a-layout-footer style="text-align: center">
        Ant Design ©2018 Created by Ant UED
        </a-layout-footer>
    </a-layout>
  </div>
</template>

<script>

import { Layout, Icon, Menu, Breadcrumb } from 'ant-design-vue' // 引入 

export default {
  name: 'App',
  data() {
    return {
      collapsed: false,
    };
  },
  components:{          // 注册 
    AIcon: Icon,
    
    ALayout: Layout,
    ALayoutHeader: Layout.Header,   //子组件也要注册,这个地方对新手来说太坑了
    ALayoutSider: Layout.Sider,
    ALayoutContent: Layout.Content,
    ALayoutFooter: Layout.Footer,

    AMenu: Menu,
    ASubMenu: Menu.SubMenu,
    AMenuItem: Menu.Item,
    
    ABreadcrumb: Breadcrumb,
    ABreadcrumbItem: Breadcrumb.Item,
  }
}
</script>

<style>
#components-layout-demo-top-side .logo {
  width: 120px;
  height: 31px;
  background: rgba(255, 255, 255, 0.2);
  margin: 16px 28px 16px 0;
  float: left;
}
</style>

2.全局注册

main.js

import Vue from 'vue'
import App from './App.vue'

import { Layout, Icon, Menu, Breadcrumb } from 'ant-design-vue' // 引入 

Vue.component(Icon.name, Icon)        // 注册

Vue.component(Layout.name, Layout);
Vue.component(Layout.Header.name, Layout.Header);
Vue.component(Layout.Content.name, Layout.Content);
Vue.component(Layout.Footer.name, Layout.Footer);
Vue.component(Layout.Sider.name, Layout.Sider);

Vue.component(Menu.name, Menu);
Vue.component(Menu.SubMenu.name, Menu.SubMenu);
Vue.component(Menu.Item.name, Menu.Item);

Vue.component(Breadcrumb.name, Breadcrumb);
Vue.component(Breadcrumb.Item.name, Breadcrumb.Item)

Vue.config.productionTip = false;

new Vue({
  render: h => h(App),
}).$mount('#app')

App.vue

<template>
  <div id="app">
    <a-layout id="components-layout-demo-top-side">
        <a-layout-header class="header">
        <div class="logo" />
        <a-menu
            theme="dark"
            mode="horizontal"
            :default-selected-keys="['2']"
            :style="{ lineHeight: '64px' }"
        >
            <a-menu-item key="1">
            nav 1
            </a-menu-item>
            <a-menu-item key="2">
            nav 2
            </a-menu-item>
            <a-menu-item key="3">
            nav 3
            </a-menu-item>
        </a-menu>
        </a-layout-header>
        <a-layout-content style="padding: 0 50px">
        <a-breadcrumb style="margin: 16px 0">
            <a-breadcrumb-item>Home</a-breadcrumb-item>
            <a-breadcrumb-item>List</a-breadcrumb-item>
            <a-breadcrumb-item>App</a-breadcrumb-item>
        </a-breadcrumb>
        <a-layout style="padding: 24px 0; background: #fff">
            <a-layout-sider width="200" style="background: #fff">
            <a-menu
                mode="inline"
                :default-selected-keys="['1']"
                :default-open-keys="['sub1']"
                style="height: 100%"
            >
                <a-sub-menu key="sub1">
                <span slot="title"><a-icon type="user" />subnav 1</span>
                <a-menu-item key="1">
                    option1
                </a-menu-item>
                <a-menu-item key="2">
                    option2
                </a-menu-item>
                <a-menu-item key="3">
                    option3
                </a-menu-item>
                <a-menu-item key="4">
                    option4
                </a-menu-item>
                </a-sub-menu>
                <a-sub-menu key="sub2">
                <span slot="title"><a-icon type="laptop" />subnav 2</span>
                <a-menu-item key="5">
                    option5
                </a-menu-item>
                <a-menu-item key="6">
                    option6
                </a-menu-item>
                <a-menu-item key="7">
                    option7
                </a-menu-item>
                <a-menu-item key="8">
                    option8
                </a-menu-item>
                </a-sub-menu>
                <a-sub-menu key="sub3">
                <span slot="title"><a-icon type="notification" />subnav 3</span>
                <a-menu-item key="9">
                    option9
                </a-menu-item>
                <a-menu-item key="10">
                    option10
                </a-menu-item>
                <a-menu-item key="11">
                    option11
                </a-menu-item>
                <a-menu-item key="12">
                    option12
                </a-menu-item>
                </a-sub-menu>
            </a-menu>
            </a-layout-sider>
            <a-layout-content :style="{ padding: '0 24px', minHeight: '280px' }">
            Content
            </a-layout-content>
        </a-layout>
        </a-layout-content>
        <a-layout-footer style="text-align: center">
        Ant Design ©2018 Created by Ant UED
        </a-layout-footer>
    </a-layout>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      collapsed: false,
    };
  },
}
</script>

<style>
#components-layout-demo-top-side .logo {
  width: 120px;
  height: 31px;
  background: rgba(255, 255, 255, 0.2);
  margin: 16px 28px 16px 0;
  float: left;
}
</style>

结果如下,一切正常
在这里插入图片描述
有点困了,遭不住。先这样吧。本片略过了常规的步骤,仅列出了一些要点。如果有什么疑惑,欢迎评论区提出

版权声明:本文为weixin_43641850原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43641850/article/details/108301690

智能推荐

CodeForce Tic-Tac-Toe

Two bears are playing tic-tac-toe via mail. It's boring for them to play usual tic-tac-toe game, so they are a playing modified version of this game. Here are its rules. The game is played on the foll...

Python雾里看花-抽象类ABC (abstract base class)

首先认识模块 abc,python中没有提供抽象类与抽象方法,然而提供了内置模块abc来模拟实现抽象类,例如提供泛映射类型的抽象类 abc.MutableMapping 继承abc.MutableMapping构造一个泛映射类型(类似python中的dict) 当然继承abc.Mapping 也可以,毕竟MutableMapping是其子类 dict是python中典型的映射类型数据结构,其接口的...

python 文件操作

2, with open (‘xx.txt’,‘w’,encoding=‘utf-8’) as f: f.write(‘文件内容或对象’)...

【Python基础】使用统计函数绘制简单图形

机器学习算法与自然语言处理出品 @公众号原创专栏作者 冯夏冲 学校 | 哈工大SCIR实验室在读博士生 2.1 函数bar 用于绘制柱状图 2.2 函数barh 用于绘制条形图 2.3 函数hist 用于绘制直方图 直方图与柱状图的区别 函数pie 用于绘制饼图 2.5 函数polor 用于绘制极线图 极线图是在极坐标系上绘出的一种图。在极坐标系中,要确定一个点,需要指明这个点距原点的角...

css:顶部按钮固定,上面内容滑动

这种需求我们平时见到很多的,实现方法也多的参差不齐,下面我说一种简单的。如图: 可以看到只有红线部分滚动,底下按钮是固定的。 代码...

猜你喜欢

环形公路堵车概率模型(含详细解析)

文章目录 基础理论 代码实现 图形分析 基础理论 路面上有n辆车,以不同的速度向前行驶, 模拟堵车问题。 有以下假设: 假设某辆车的当前速度是v。 若前方可见范围内没车,则它在下一秒的车速提高到v+1,直到达到规定的最高限速。 若前方有车,前车的距离为d,且d < v,则它下 一秒的车速降低到d-1 。 每辆车会以概率p随机减速v-1。、 代码实现 图形分析 图形中颜色越重的地方,说明很多车...

JavaScript事件处理的例题

知道的越多,所不知道的越多。如果带给你帮助,点赞支持一下。 JavaScript事件处理的例题 1、表单验证 2、验证数字输入 3、利用document对象的bgColor属性改变背景色,添加鼠标悬停事件 4.附加题(选做) 1、表单验证 要求:用户名不少于2位,并且用户名第一个字符需为字母! 密码长度必须在6~15之间。 2、验证数字输入 如果输入的值 x 不是数字或者小于 1 或者大于 10,...

arduino操作光照传感器BH1750(数字型,I2C接口)

BH1750传感器,用于检测环境光光照强度。 BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC。其主要特性有: I2C数字接口,支持速率最大400Kbps 输出量为光照度(Illuminance) 测量范围1~65535 lux,分辨率最小到1lux 低功耗(Power down)功能 屏蔽50/60Hz市电频率引起的光照变化干扰 支持两个I2C地址,通过ADDR引脚选择 ...

10.31 数组算法学习-冒泡、选择、二分法

  冒泡排序:   冒泡排序 https://blog.csdn.net/kelinfeng16/article/details/84034386 原文地址:https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重...

排序算法5--交换排序2--快速排序(C++完整代码实现)

以上图片来自天勤数据结构,以下代码***非天勤数据结构提供的代码;*** 平均时间复杂度O(nlog2n)...