在自定义 Vue.js 组件中导入第三方组件(vue-color)

Posted

技术标签:

【中文标题】在自定义 Vue.js 组件中导入第三方组件(vue-color)【英文标题】:Import a Third-Party Component (vue-color) in the custom Vue.js Component 【发布时间】:2019-01-03 02:12:56 【问题描述】:

我最近开始使用 Vue.js,我想创建简单的 TODO 应用程序。但我需要有机会在输入表单中为我的任务选择一种颜色。所以,我找到了一个第三方库vue-color,但我不知道如何将它包含在我的应用程序中,基于webpack模板的下一个结构:

../
  src
    components
      ProjectInput.vue
      ProjectItem.vue
      ProjectList.vue
      ColorPicker.vue
    App.vue
    main.js

组件 ProjectInput 有颜色组件的下一个定义:

<template>
    ...
    <color-picker/>

<script>
  import ColorPicker from './ColorPicker'

  export default 
    components: 
      ColorPicker
    ,
  ...

...以及文档中的一个简单组件 ColorPicker.vue

<template>
  <div class="input-group color-picker-component">
     <chrome-picker></chrome-picker>
  </div>
</template>
<script>
  import  Chrome  from 'vue-color'
  export default 
   name: 'ColorPicker',
   components: 
     'chrome-picker': Chrome
   ,
 
</script>

渲染 ProjectInput 时返回错误

 [Vue warn]: Error in data(): "TypeError: Cannot read property 'h' of undefined"
 found in
  ---> <Chrome> at src/components/Chrome.vue
   <ColorPicker> at src/components/ColorPicker.vue
     <ProjectInput> at src/components/ProjectInput.vue
       <ProjectList> at src/components/ProjectList.vue
         <App> at src/App.vue
           <Root>

我尝试了不同的方法。我尝试在 main.js 中导入 vue-color 并使用 Vue.use(VueColor) 以便在 ProjectInput 中创建组件,如 var Chrome = VueColor.Crome 但它返回一个错误 VueColor 未定义

如何正确导入?

【问题讨论】:

【参考方案1】:

vue-color 组件找不到初始颜色。您应该提供v-model:value/@input

new Vue(
  el: "#app",
  components: 
     ChromeColor: VueColor.Chrome
  ,
  data: 
    color: '#ff00ff'
  
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-color/2.4.6/vue-color.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>
<div id="app">
  <chrome-color v-model="color"></chrome-color>
</div>

【讨论】:

哦,谢谢!是的,你说得对,我错过了 v-model。现在它就像我想要的那样工作。

以上是关于在自定义 Vue.js 组件中导入第三方组件(vue-color)的主要内容,如果未能解决你的问题,请参考以下文章

如何在vue.js项目的main.js文件中导入js类并在所有组件中使用它而不是在每个组件中导入?

uniapp在自定义模板中引入js之后在组件里怎么使用里面的方法

在 vue 3 中导入组件

尝试在 Laravel 的 vue.js 组件中导入 socket.io 时出现问题

如何在 Vue 组件中导入外部函数?

有没有更好的方法或在 vue.js 中导入 mixins