我想将下面代码转化成用h函数书写,前提是使用setup语法糖的形式。
这是我尝试的两种写法。但是不行
百思不得其解,有大佬知道正确的写法吗?
我想将下面代码转化成用h函数书写,前提是使用setup语法糖的形式。
这是我尝试的两种写法。但是不行
百思不得其解,有大佬知道正确的写法吗?
看文档
export default {
props: ['message'],
setup(props, { slots }) {
return () => [
// default slot:
// <div><slot /></div>
h('div', slots.default()),
// named slot:
// <div><slot name="footer" :text="message" /></div>
h(
'div',
slots.footer({
text: props.message
})
)
]
}
}
我刚意外的发现,我这么写是是可以渲染出来的。之前不行可能是存在缓存问题。。。
<template>
<div class="z-tab">
<Headers />
<Body />
<!-- <div :class="['tab_body', { 'border-card': type === 'border-card' }]">
<slot />
</div> -->
</div>
</template>
<script lang="ts" setup name="Tab">
import { useSlots, h } from "vue";
const slots = useSlots();
const Body = () => {
return h(
"div",
{
class: { tab_body: true, "border-card": props.type === "border-card" },
},
{
default: () => [slots.default()],
}
);
};
import TabHeader from "./tab-header/index.vue";
const Headers = () => {
return h(TabHeader, {
"tab-list": tabList,
value: props.modelValue,
type: props.type,
onUpdateValue: getUpdateValue,
});
};
</script>
3 回答3.3k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1k 阅读✓ 已解决
在
<script setup>
中如何使用slots
:文档但是如果你想要在
<script setup>
中使用像普通<script>
中的setup
那样返回一个函数作为渲染函数,那答案是不能的。可以参考一下 这里。
归根到底你要想清楚你为什么会产生需要在
<script setup>
中编写渲染函数的需求。