从名字上能看出这个组件本身跟UI没有关系,所以叫做Renderless。它所作的事情是把一些计算逻辑抽离出来,便于复用。其实我有一点疑惑,我既然有了Composition,我为什么还要用Renderless Component呢?在我看来它们两个的场景很相似,而我更喜欢Composition。不管怎么样,先介绍一下Renderless Component吧。
它的大致代码结构是这样的:
// MyRenderlessComponent.ts export default MyRenderlessComponent { setup(props, { slot }) { // 读取props中的值 // 根据props中的值进行运算,获取新的值(计算属性或Ref) return slot.default({ // 把计算得到的值传递出去 }) } }
<template> <MyRenderlessComponent :some-prop="xxx" v-slot="{ 传递出来的值 }">使用传递出来的值 </MyRenderlessComponent> </template> <script setup lang="ts"> const xxx = ref(''); </script>
发表回复