Skip to content

Commit 1a14d46

Browse files
author
sqrtthree
committed
translate the new section about mixins due to 3b032ec
1 parent 2bf9446 commit 1a14d46

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

README-CN.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
</p>
88

99
### 其它语言
10+
1011
* [英文](https://pablohpsilva.github.io/vuejs-component-style-guide/#/)
1112
* [葡萄牙语](https://pablohpsilva.github.io/vuejs-component-style-guide/#/portuguese)
1213
* [日本](https://pablohpsilva.github.io/vuejs-component-style-guide/#/japanese)
@@ -288,7 +289,9 @@ export default {
288289
export default {
289290
// 不要忘记了 name 属性
290291
name: 'RangeSlider',
291-
// 组合其它组件
292+
// 使用组件 mixins 共享通用功能
293+
mixins: [],
294+
// 组成新的组件
292295
extends: {},
293296
// 组件属性、变量
294297
props: {
@@ -616,6 +619,56 @@ Vue.js 是一个基于组件的框架。如果你不知道何时创建组件可
616619

617620
---
618621

622+
## 尽可能使用 mixins
623+
624+
### 为什么?
625+
626+
Mixins 封装可重用的代码,避免了重复。如果两个组件共享有相同的功能,则可以使用 mixin。通过 mixin,你可以专注于单个组件的任务和抽象的通用代码。这有助于更好地维护你的应用程序。
627+
628+
### 怎么做?
629+
630+
假设你有一个移动端和桌面端的菜单组件,它们共享一些功能。我们可以抽象出这两个组件的核心功能到一个 mixin 中,例如:
631+
632+
```js
633+
const MenuMixin = {
634+
data () {
635+
return {
636+
language: 'EN'
637+
}
638+
},
639+
640+
methods: {
641+
changeLanguage () {
642+
if (this.language === 'DE') this.$set(this, 'language', 'EN')
643+
if (this.language === 'EN') this.$set(this, 'language', 'DE')
644+
}
645+
}
646+
}
647+
648+
export default MenuMixin
649+
```
650+
要使用 mixin,只需将其导入到两个组件中(我只展示移动组件)。
651+
652+
```html
653+
<template>
654+
<ul class="mobile">
655+
<li @click="changeLanguage">Change language</li>
656+
</ul>
657+
</template>
658+
659+
<script>
660+
import MenuMixin from './MenuMixin'
661+
662+
export default {
663+
mixins: [MenuMixin]
664+
}
665+
</script>
666+
```
667+
668+
[↑ 回到目录](#目录)
669+
670+
---
671+
619672
### 如何提供帮助?
620673

621674
Fork 和提 PR 以帮助我们改进或者可以给我们提 [Issue](https://github.com/pablohpsilva/vuejs-component-style-guide/issues/new)

0 commit comments

Comments
 (0)