javascript - Vue.js - 默认应用一个类,除非手动添加一个类?

标签 javascript vue-component vue.js

我刚刚开始使用 Vue.js,我有点不知道这是否可行。给定以下组件:

<button class="button large primary-gradient">{{ text }}</button>

如果可能的话,我希望“large Primary-gradient”类能够以开发人员稍后是否向 HTML 中的按钮组件添加其他类为条件。

例如,如果开发人员编写

<custom-button text="hi"></custom-button>

它应该渲染出来

<button class="button large primary-gradient">hi</button>

但是,如果开发人员写道:

<custom-button class="medium secondary" text="hi"></custom-button>

它应该渲染出来

<button class="button medium secondary">hi</button>

本质上,我正在尝试为此按钮组件创建默认类值,这些值仅在开发人员不添加自己的值时使用。在我看来,这应该很容易做到,但我对 Vue 的有限了解有点阻碍了我。感谢您的任何见解!

最佳答案

最好使用 props 来控制它:

Vue.component('custom-button', {
  props: {
    text: String,
    size: { type: String, default: 'large' },
    type: { type: String, default: 'primary-gradient' }
  },
  computed: {
    classes: function () {
      return ['button', this.size, this.type].join(' ')
    }
  },
  template: '<button v-bind:class="classes">{{ text }}</button>'
})

用法:

<custom-button size="medium" type="secondary" text="Hi"/>

关于javascript - Vue.js - 默认应用一个类,除非手动添加一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41497189/

相关文章:

javascript - Redux:在 reducer 函数中调用 store.getState(),这是一种反模式吗?

javascript - 为什么结果与我的预期不同?

javascript - 出现错误 : "Cannot read property ' length' of undefined"only in production setup

javascript - 自动更新表单中的输入字段,vue.js

javascript - 用 setInterval 替换 vue.js 模板

javascript - 如何使用 vue-chartjs 将图像添加到图表标签?

javascript - JavaScript 中的 Modules + Fascade + Mediator 组合

javascript - 如何在 WPF 和 WinRT 中调用 .NET 中的 Javascript?

vuejs2 - 当路由改变到下一个组件时,不要自动滚动到顶部

vue.js - 将 parent Prop 传递给 Vue,js 中的插槽