首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将选项传递到自定义vue组件中?

如何将选项传递到自定义vue组件中?
EN

Stack Overflow用户
提问于 2020-02-20 02:52:25
回答 1查看 386关注 0票数 0

我制作了一个自定义的Vue组件,并通过npm发布它。我的组件在我的主项目中如我所期望的那样工作,但在目前的使用情况下,用户需要发送太多的道具才能有效地使用我的组件,并且没有重复的代码。

我将我的组件安装为

代码语言:javascript
复制
//index.js in component folder
import MyComponent from "./MyComponent.vue";

export default {
  install(Vue, options) {
    Vue.component("my-component", MyComponent);
  }
};

并在我的项目中注册为

代码语言:javascript
复制
//main.js in project folder
import Vue from 'vue'
import MyComponent from 'my-component'

Vue.use(MyComponent)

在我的.vue文件中使用我的自定义组件:

代码语言:javascript
复制
<my-component v-model="myData" prop1="prop1" prop2="prop2" prop3="prop3"></my-component>

由于道具用法看起来如此凌乱,并导致我自己有太多重复的代码,我想在选项中注册该道具并传递我的组件。但不知道该怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-20 03:26:58

您可以使用安装阶段覆盖默认值,如下所示:

代码语言:javascript
复制
import MyComponent from './components/MyComponent';

export default {
  install(Vue, options = {}) {
    let props = { ...MyComponent.props };
    Object.keys(options).forEach(k => {
      props[k] = { default: options[k] };
    });

    Vue.component('my-component', { ...MyComponent, props });
  },
};

此脚本的作用是允许您执行以下操作...

代码语言:javascript
复制
Vue.use(MyComponent, {prop1:"abc", props:"def"});

当你在应用程序中的某个地方使用组件时,道具仍然是交互式的,并且可以被覆盖,但你可以保留为默认设置。它通过将现有的属性定义替换为仅将default定义为传递的值的对象来实现这一点。它有点像黑客,所以我不确定它在一些边缘情况下会有多好。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60307348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档