我可以在 SFC <script setup> 中定义 Vue JSX 组件并在 SFC 模板中使用它吗?

Dal*_*pić 6 javascript jsx vue.js vuejs3 vue-composition-api

我喜欢在 React 中你可以在主组件文件中快速创建小组件。Vue 3 组合 API 可以实现类似的功能吗?

像这样的东西:

组件.vue

<script setup>
    const SmallComponent = <div>Test</div>
</script>
<template>
    <SmallComponent/>
</template>
Run Code Online (Sandbox Code Playgroud)

Est*_*ask 3

这里的问题是,这SmallComponent不是一个组件,而是 vnode 对象。Vnode 可以直接在渲染函数中渲染,但不能在模板中渲染。

相反,它应该是功能组件

const SmallComponent = props => <div>Test</div>
Run Code Online (Sandbox Code Playgroud)

在 中script setup,它是唯一可用的选项,因为语法提供了功能的子集并且不支持渲染函数。

  • 你没有提到那个插件,你也没有提到脚本应该是 `&lt;script setup lang="jsx"&gt;` - 一旦你添加了那个转换,并更改了脚本标签,那么它就可以工作 (2认同)