typescript - Vue:mixin 调用要在组件中实现的方法是一种反模式吗?
问题描述
我目前正在尝试将现有组件重构为 DRY,因此我正在构建一个 mixin。
但是,我发现有必要从 mixin 自己的方法或生命周期钩子中调用组件的特定方法,尽管它有效,但它在某种程度上作为一种反模式响起:
日历混合.js:
let calendarMixin = {
created () {
this.getCalendar();
}
};
CalendarOne.vue
export default {
mixins: [calendarMixin],
methods: {
...mapActions('storeCalendarOne', ['getCalendar'])
}
};
CalendarTwo.vue
export default {
mixins: [calendarMixin],
methods: {
...mapActions('storeCalendarTwo', ['getCalendar'])
}
};
也许 mixin 中的某种文档适合指定必须在使用 mixin 的组件中实现哪些方法,但它并不能像 OOP 的接口那样解决有关代码的任何问题。
我还想知道 Vue 中的 TypeScript 是否会为此提供解决方案,例如在 mixins 中定义严格的实现语句。
提前致谢。
解决方案
如果您使用的是 vuex,我会像这样构建我的代码:
/src
/mixins
CalendarMixins.js
/components
CalendarOne.vue
CalendarMixins.js
import {mapActions} from 'vuex'
export default {
created () {
this.getCalendar();
},
methods: {
...mapActions(['getCalendar'])
}
}
CalendarOne.vue
import CalendarMixins from '@/mixins/CalendarMixins'
import {mapActions} from 'vuex'
export default {
mixins: [CalendarMixins],
methods: {
...mapActions('storeCalendarOne')
}
}
推荐阅读
- c - 我如何编写 C 编程大写字母分隔函数?
- python-3.x - 需要帮助将 Unix 时间戳解码为日期(不和谐)
- arrays - 有限的字符串在 C 中接受无限的字符
- amazon-web-services - 如何从消息 ID 调试 AWS SNS 的传递状态?
- similarity - 微调对象关键点相似度(OKS)
- java - Java 时间解析“2021 年 6 月 26 日,纽约时间下午 4:30:15”
- ios - Xcode UI 测试找不到元素
- git - 如何合并或变基分支工作流
- python - 跨行的 Pandas DataFrame 条件
- c++ - 如何修复 emacs 中的 c++ 缩进?