使用vant的时候,报错:component has been registered but not used以及vant的使用方法总结

在使用vant的时候。 想按需引入,于是安装了babel-plugin-import插件。

文档:https://youzan.github.io/vant/#/zh-CN/quickstart

但是遇到了上述报错。 不在components中注册,或者用这种常用的方式注册,都会报错:

//示例
import { Button } from 'vant'//引入
components:{ Button } //注册

注意:文档都没有写引入的组件的注册部分,没有完整的使用实例。

具体报错如下:

解决方案1(只有少量使用vant组件的时候,可以考虑这个,因为一个个引入有些麻烦)

手动引入,需要单独引入组件和css。 组件的路径文件夹名称有时候还需要自己找。

路径是:node_modules_vant@2.6.0@vant\lib

还要单独的引入对应的css样式。

特别需要注意的是注册方式需要是:

[组件名.name]:组件名

<template>
<div>
this is for test words!
<van-swipe-cell>
<template #left>
<van-button square type="primary" text="选择" />
</template>
<van-cell :border="true" title="单元格" value="内容" />
<template #right>
<van-button square type="danger" text="删除" />
<van-button square type="primary" text="收藏" />
</template>
</van-swipe-cell> <van-button type="default">默认按钮</van-button>
<van-button type="primary">主要按钮</van-button>
<van-button type="info">信息按钮</van-button> </div>
</template>
<script>
import Button from 'vant/lib/button';
import SwipeCell from 'vant/lib/swipe-cell';
import Cell from 'vant/lib/cell'; import 'vant/lib/swipe-cell/style';
import 'vant/lib/cell/style';
import 'vant/lib/button/style';
export default {
name: "Login",
components: {
[Button.name]:Button,
[SwipeCell.name]:SwipeCell,
[Cell.name]:Cell
}
};
</script>

需要引入暴露的组件名。但是测试发现可以是任意的,

因为swipe-cell中没有搜索到找到SwipeCell。

但是在button中有export“Button”

例如:

import XButton from 'vant/lib/button';//引入
[XButton.name]:XButton//注册

所以只需要保持一致就行。

该解决方案参考了:

在官方在github中提供的demo中,发现局部注册有像这样写的。

https://github.com/youzan/vant-demo/blob/master/vant/base/src/view/cart/index.vue

解决方案2 (这会让打包后的文件体积大一点,但是确实是最方便的方式。如果不考虑模块化,工程化开发而不介意把它挂载到vue原型的话)

main.js

import Vue from 'vue'
import App from './App.vue'
import Vant from 'vant';
import 'vant/lib/index.css'; Vue.use(Vant);
Vue.config.productionTip = false new Vue({
render: h => h(App),
}).$mount('#app')

demo.vue

<template>
<div>
this is for test words!
<van-swipe-cell>
<template #left>
<van-button square type="primary" text="选择" />
</template>
<van-cell :border="true" title="单元格" value="内容" />
<template #right>
<van-button square type="danger" text="删除" />
<van-button square type="primary" text="收藏" />
</template>
</van-swipe-cell> <van-button type="default">默认按钮</van-button>
<van-button type="primary">主要按钮</van-button>
<van-button type="info">信息按钮</van-button> </div>
</template>
<script> export default {
name: "Login",
components: { }
};
</script>

不用导入,不用注册,直接用.

解决方案3(推荐)也是开篇使用babel-plugin-import插件遇到的问题的解决方法

其实这不算解决方案。只是以前用vue的时候,组件注册这里有个小细节一直没有注意导致的。

快速查看示例代码:

<template>
<div>
this is for test words!
<van-swipe-cell>
<template #left>
<van-button square type="primary" text="选择" />
</template>
<van-cell :border="true" title="单元格" value="内容" />
<template #right>
<van-button square type="danger" text="删除" />
<van-button square type="primary" text="收藏" />
</template>
</van-swipe-cell> <van-button type="default">默认按钮</van-button>
<van-button type="primary">主要按钮</van-button>
<van-button type="info">信息按钮</van-button> </div>
</template>
<script>
import { Button,SwipeCell,Cell } from 'vant'
export default {
name: "Login",
components: {
'van-button':Button,//对应<van-button>标签
'van-swipe-cell':SwipeCell,//对应<van-swipe-cell>标签
'van-cell':Cell//对应<van-cell>标签 //也可以像这样写
// vanButton:Button,
// vanSwipeCell:SwipeCell,
// vanCell:Cell }
};
</script>

之所以,出现“component has been registered but not used”这个报错,就是因为使用了components:{ Button }进行注册。

这种注册方式注册的是Button这个元素,但是在dom上确实没有这个元素。 因为是van-button这个元素。 而这个元素又没有被正确注册 。

也就是说<van-button>标签、<van-swipe-cell>标签、<van-cell>标签都没有被正确的注册导致的。

你可以像这样来注册组件:

'van-button':Button,//对应<van-button>标签
'van-swipe-cell':SwipeCell,//对应<van-swipe-cell>标签
'van-cell':Cell//对应<van-cell>标签

还可以用驼峰命令法,首字母大小写都可以,省略" - " 来进行注册。如:

vanButton:Button,
vanSwipeCell:SwipeCell,
vanCell:Cell
或者
VanButton:Button,
VanSwipeCell:SwipeCell,
VanCell:Cell

该解决方案参考:

https://cn.vuejs.org/v2/guide/components-registration.html (#组件名大小写)

总结:

在vue中,带短横线的标签元素的注册。必须是驼峰命令法,或者用引号括起来。

如<van-button>的注册必须是
vanButton:Button
或者VanButton:Button
再或者'van-button':Button

使用vant的时候,报错:component has been registered but not used以及vant的使用方法总结的更多相关文章

  1. VUE编译报错 Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead

    背景: 在使用VUE添加标签的时候编译报错,报错如下: Component template should contain exactly one root element. If you are u ...

  2. Vue脚手架报错 Component name "Student" should always be multi-word vue/multi-word-component-names

    报错信息分析: 新手在第一个次使用脚手架的时候难免会遇到各种各样奇怪的问题,最近在学习Vue的过程中就出现了如下问题 通过阅读报错信息可知: 是我们的组件名有一些问题,(报错信息翻译过来大概就是组件名 ...

  3. ubuntu 修改保存报错E37:No write since last change(add ! to override)的解决方法

    报错信息如下: E37: No write since last change (add ! to override) 解决办法是: 在修改完后,将命令 :q 改成 :wq 即可.

  4. (原创)vagrant up 异常报错,出现 There was an error while executing `VBoxManage` 的解决方法

    最近在使用 vagrant homestead 时,不小心在虚拟机上使用了 exit 命令退出虚拟机,导致再使用 vagrant up 时出现以下错误: Bringing machine 'larav ...

  5. Https协议报错:com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl解决方法

    旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/82220333 所用应用服务器:JBoss服务 ...

  6. Archlinux/Manjaro使用笔记-使用makepkg安装软件 报错:未找到strip分割所需的二进制文件 的解决方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 使用archlinux或manjaro安装aurman时遇到如下报错 错误:未找到strip分割所需的二进制文件 原因:未安装g ...

  7. Win7 64bit 安装VisualSVN出现报错:Servic &#39;VisualSVN Server&#39; failed to start.解决的方法

    问题描写叙述: Win7 64bit 安装VisualSVN时出现报错: Servic 'VisualSVN Server' failed to start.Please check VisualSV ...

  8. 报错org.openqa.selenium.WebDriverException: disconnected: unable to connect to renderer解决方法

    做自动化时经常会遇到不兼容的问题,比如以下简单的脚本,主要是打开浏览器,然后最大化窗口,打开百度,输入内容搜索,代码如下: package com.gs.selenium; import org.op ...

  9. mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法

    1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller  ...

随机推荐

  1. linux firewalld 防火墙操作命令

    查看防火墙的状态systemctl status firewalldTomcat默认使用8080端口,如果防火墙开启,需要开通8080端口firewall-cmd --zone=public --ad ...

  2. linux4.1.36 解决 SPI 时钟找不到 不生成设备 device

    最初的问题是 编译内核添加了 spi 支持,配置了 board 后,加载25q64驱动不执行probe 函数. 然后发现是,spi-s3c24xx.c 中的 probe 没有执行完就退出了 没有生成 ...

  3. C++ 重载关系操作符

    #include <iostream> using namespace std; class AAA { public: AAA() //默认构造 { } AAA(int id, stri ...

  4. 利用mnist数据集进行深度神经网络

    初始神经网络 这里要解决的问题是,将手写数字的灰度图像(28 像素 x28 像素)划分到 10 个类别中(0~9).我们将使用 MINST 数据集,它是机器学习领域的一个经典数据集,其历史几乎和这个领 ...

  5. 从 Spring 的环境到 Spring Cloud 的配置

    需求 不知不觉,web 开发已经进入 “微服务”.”分布式” 的时代,致力于提供通用 Java 开发解决方案的 Spring 自然不甘人后,提出了 Spring Cloud 来扩大 Spring 在微 ...

  6. 【vue生命周期】- 详解

    这篇文章通俗易懂,写的不错,本文转载至:https://www.cnblogs.com/happ0/p/8075562.html 详解Vue Lifecycle 先来看看vue官网对vue生命周期的介 ...

  7. 【Weiss】【第03章】练习3.9:大整数运算包

    [练习3.9] 编写任意精度的整数运算包,要求使用类似多项式运算的方法.计算24000内数字0到9的分布.

  8. Natas32 Writeup(Perl 远程代码执行)

    Natas32: 打开后和natas31相似的界面,并且提示,这次您需要证明可以远程代码执行,Webroot中有一个二进制文件可以执行. my $cgi = CGI->new; if ($cgi ...

  9. 一起了解 .Net Foundation 项目 No.21

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. UWP Community ...

  10. Kubernetes实战总结 - 系统初始化

    设置系统主机名以及Host文件的相互解析 hostnamectl set-hostname k8s-master01 cat >> /etc/hosts <<EOF 192.1 ...