标题可能说的不清楚,比如以下写法:
// hooks.js
function useList (apiUrl) {
const loading = ref(false)
const list = ref([])
const getData = () => {
loading.value = true
http.get(apiUrl).then(data => {
list.value = data
loading.value = false
})
}
const MyList = {
render () {
return <a-list data-source={list.value} loading={loading.value} size="small" />
}
}
const ReloadBtn = {
render () {
return <a-button type="primary" size="small" onClick={getData} disabled={loading.value}>刷新</a-button>
}
}
}
// App.vue
<template>
<div>
<Component :is="ReloadBtn" />
</div>
<Component :is="MyList" />
</template>
<script>
import { useList } from 'hooks.js'
export default {
setup () {
const { MyList, ReloadBtn } = useList('http://xxxxxx/xxx')
return { MyList, ReloadBtn }
}
}
</script>
// or App.vue with script setup
<template>
<div>
<ReloadBtn />
</div>
<MyList />
</template>
<script setup>
import { useList } from 'hooks.js'
const { MyList, ReloadBtn } = useList('http://xxxxxx/xxx')
</script>
类似这样(把 UI 封装在 hook 函数里)的实践,算是邪道么?因为我似乎 Google 不到任何相关的讨论,而在 VueUse 这类的库中,我也看不到任何这样做的例子,所以有点好奇。这样做有什么重大的缺陷吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.