我对VueJS很陌生。我正在使用VueCLI3和VuetifyJS进行新项目。
我正在尝试基于VuetifyJS组件创建可重用的组件,并希望通过在一个单独的文件中传递多个props以便一次在我的新组件文件中呈现它们来简化事情。 我发现这篇文章解释了实现这种目标的技术。
https://alligator.io/vuejs/passing-multiple-properties/
每次我需要渲染它们时,都必须导入单独的文件。
component1.vue
<template>
<v-btn v-bind='buttonProps'>
Button 1
</v-btn>
</template>
<script>
import { buttonProps } from './props.js';
export default {
data: () => ({ buttonProps })
}
</script>
component2.vue
<template>
<v-btn v-bind='buttonProps'>
Button 2
</v-btn>
</template>
<script>
import { buttonProps } from './props.js';
export default {
data: () => ({ buttonProps })
}
</script>
是否有任何方法可以全局注册文件,这样我可以在应用程序中的任何地方使用它?
props.js
export const buttonProps = {
color: 'primary',
small: true,
outline: true,
block: true,
ripple: true,
href: 'https://alligator.io'
}
main.js
import Props from 'props.js';
component3.vue
<template>
<v-btn v-bind='buttonProps'>
Button 3
</v-btn>
</template>
<script>
... // no import needed
</script>
答案 0 :(得分:2)
您可以使用mixin
并全局注册该mixin。
buttonPropsMixin
export default {
data() {
return {
buttonProps: {
color: 'primary',
small: true,
outline: true,
block: true,
ripple: true,
href: 'https://alligator.io'
}
}
}
}
main.js
import buttonPropsMixin from '...';
Vue.mixin(buttonPropsMixin)
注意,每个vue组件都有其自己的buttonProps
,因此,如果您在一个组件中进行了更改,color
将会不会影响另一个组件组件!
如果您希望buttonProps
在所有组件中都具有相同的状态,则可以采用Igor提到的vuex
方式,并将其与mixin一起使用,在该mixin中定义该mixin中的mapGetters
。 / p>
答案 1 :(得分:0)
如果props.js
中的数据不需要是反应性的,并且所有组件都是某个根组件的子组件,则可以执行以下操作:
main.js:
import buttonProps from 'props.js';
new Vue({
el: rootComponentElement,
buttonProps: buttonProps,
render: h => h(rootComponent)
})
component.vue:
<template>
<v-btn v-bind='$root.$options.buttonProps'>
Button 3
</v-btn>
</template>
<script>
... // no import needed
</script>