当前位置:网站首页>Advanced Vue component pattern (3)
Advanced Vue component pattern (3)
2020-11-06 01:23:00 【:::::::】
03 Use mixin To enhance Vue Components
The goal is
In the previous article , Although we will toggle Components are divided into toggle-button、toggle-on and toggle-off Three sub components , And everything works well , But there are some problems in it :
-
toggleThe internal state and method of a component can only be shared with these three subcomponents , We expect that third-party components can also share these States and methods - inject We wrote the injection logic three times , If you can , We would prefer to declare only once (DRY principle )
- inject The injection logic of is currently hard coded , In some cases , We may expect dynamic configuration
If you are familiar with react The reader here may immediately think of HOC( High order component ) The concept of , And it's also react One of the most common patterns , This mode can improve react The degree of reuse and flexibility of components . stay vue in , Do we also have some means or features to improve the reusability and flexibility of components ? The answer, of course, is yes , That's it mixin.
Realization
About mixin Own knowledge , I won't go over it here , Unfamiliar readers can go to official documents to understand . We have made a declaration called toggleMixin Of mixin To pull out the public injection logic , as follows :
export const withToggleMixin = {
inject: {
toggleComp: "toggleComp"
}
};
after , Whenever you need to inject toggle When a component provides a dependency , Just blend into the present mixin, as follows :
mixins: [withToggleMixin]
If the logic of Injection , Let's add some flexibility , For example, you want to freely declare that you want to inject dependencies key when , We can borrow from HOC The concept of , Declare a higher order mixin( Can be abbreviated HOM ?? A skin , Very happy ), as follows :
export function withToggle(parentCompName = "toggleComp") {
return {
inject: {
[parentCompName]: "toggleComp"
}
};
}
This HOC mixin It can be used as follows :
mixins: [withToggle("toggle")]
So in the current component , call toggle Component related states and methods , It is no longer this.toggleComp, It is this.toggle.
results
By implementing toggleMixin, We managed to pull the logic out of the injection , So every time you need to share toggle When the state and method of the component , Mix in the mixin that will do . This solves the problem that third-party components cannot share their states and methods , In the online instance code , I implemented two third-party components , Namely custom-button and custom-status-indicator, The former is a custom switch , Use withToggleMixin To mix in the injection logic , The latter is a custom status indicator , Use withToggle Higher order functions to mix in injection logic .
You can see the implementation code and demonstration of this component in the following link :
- sandbox: The online demo
- github: part-3
summary
mixin As a distribution Vue A very flexible way to reuse functions in components , It can be used in many scenes , Especially in some components dealing with public logic , For example, notice 、 Form error prompt, etc , This mode is especially useful .
Catalog
github gist Click preview
Participation of this paper Tencent cloud media sharing plan , You are welcome to join us , share .
版权声明
本文为[:::::::]所创,转载请带上原文链接,感谢
边栏推荐
- PHPSHE 短信插件说明
- Flink的DataSource三部曲之二:内置connector
- Python3 e-learning case 4: writing web proxy
- Windows 10 tensorflow (2) regression analysis of principles, deep learning framework (gradient descent method to solve regression parameters)
- 如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
- htmlcss
- Relationship between business policies, business rules, business processes and business master data - modern analysis
- git rebase的時候捅婁子了,怎麼辦?線上等……
- Group count - word length
- Grouping operation aligned with specified datum
猜你喜欢

如何将数据变成资产?吸引数据科学家

关于Kubernetes 与 OAM 构建统一、标准化的应用管理平台知识!(附网盘链接)

JVM memory area and garbage collection

The difference between Es5 class and ES6 class

Using Es5 to realize the class of ES6

Not long after graduation, he earned 20000 yuan from private work!

速看!互联网、电商离线大数据分析最佳实践!(附网盘链接)

比特币一度突破14000美元,即将面临美国大选考验

vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证

Do not understand UML class diagram? Take a look at this edition of rural love class diagram, a learn!
随机推荐
钻石标准--Diamond Standard
阿里云Q2营收破纪录背后,云的打开方式正在重塑
What is the difference between data scientists and machine learning engineers? - kdnuggets
至联云解析:IPFS/Filecoin挖矿为什么这么难?
Common algorithm interview has been out! Machine learning algorithm interview - KDnuggets
6.2 handleradapter adapter processor (in-depth analysis of SSM and project practice)
一篇文章带你了解CSS 分页实例
Windows 10 tensorflow (2) regression analysis of principles, deep learning framework (gradient descent method to solve regression parameters)
Vue 3 responsive Foundation
Why do private enterprises do party building? ——Special subject study of geek state holding Party branch
Working principle of gradient descent algorithm in machine learning
Grouping operation aligned with specified datum
6.5 request to view name translator (in-depth analysis of SSM and project practice)
How to become a data scientist? - kdnuggets
人工智能学什么课程?它将替代人类工作?
如何将数据变成资产?吸引数据科学家
容联完成1.25亿美元F轮融资
Using Es5 to realize the class of ES6
EOS创始人BM: UE,UBI,URI有什么区别?
2019年的一个小目标,成为csdn的博客专家,纪念一下