vue3 如何分离组件的公共逻辑?
<template lang="pug">
.container vue3
</template>
<script setup>
import { provide } from "vue"
const props = defineProps({
msg: {
type: String,
default: "",
// required: true
},
})
let data = $ref({
a:1
})
provide("data", data)
const emit = defineEmits(["change"])
const demo = () => {
console.log("demo")
}
defineExpose({
demo,
})
</script>
<style lang="scss" scoped>
.container {
width: 100%;
height: 100%;
}
</style>
以上是一个基本的vue组件,我不介意各种语法糖, 好用就用,所以我全用。
问题是:
我有几个逻辑完全一样的组件,但页面结构与样式不同,请问怎样提取逻辑代码?看网上的教程,一言难尽……大部分都是提取方法到js里再导入
回复
1个回答

test
2024-07-11
确实是要这样。vue3一般封装成 use hook,把通用的方法抽离到hooks里面,然后在组件中单独引入,可以参考element-plus
的useOption如果你这些组件有公用组件,你也可以把这个公用组件拆出来当一个子组件,这样也能减少一部分代码。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容