【问题标题】:How do I use jsx syntax in vue files in vue3如何在 vue3 的 vue 文件中使用 jsx 语法
【发布时间】:2021-04-14 23:51:19
【问题描述】:

例如,我想在Hello.vue中使用这些代码:

<template>
  <RenderComponent :data="hello" />
</template>

<script>
import { ref, computed, defineComponent } from 'vue'

export default defineComponent({
  name: 'CustomComponent',

  setup() {
    const name = ref('Lily')

    const hello = computed(() => {
      return <span>Hello {name}!</span>;
    }) 
    return {
       hello
    }
  }
})
</script>

但 IDE 会抛出类似“无法解析源以进行导入分析,因为内容包含无效的 JS 语法”这样的错误。

我已经安装了@vitejs/plugin-vue-jsx@vue/babel-plugin-jsx,可以成功使用*.jsx文件了。

我该怎么办?

【问题讨论】:

    标签: jsx vuejs3


    【解决方案1】:

    你应该在名为Hello.jsx的文件中使用jsx而不使用templatescript标签,并且不要从属性返回jsx并返回函数()=&gt;来渲染jsx,下面的例子应该工作:

    import { ref, computed, defineComponent } from 'vue'
    
    export default defineComponent({
      name: 'CustomComponent',
    
      setup() {
        const name = ref('Lily')
    
        const hello = computed(() => {
          return `Hello ${name.value}!`;
        }) 
        return ()=><RenderComponent data={hello} />
      }
    })
    

    【讨论】:

    • 谢谢~但是我还是想在vue文件中使用JSX。我发现&lt;script lang=‘jsx’&gt;...&lt;/script&gt; 可以解决这个问题。但它无法识别自定义全局组件。 T.T
    • &lt;script lang=‘jsx’&gt; 不推荐,因为你没有模板和样式标签
    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 2023-03-19
    • 2021-04-03
    • 2019-10-15
    • 2021-04-09
    • 2021-07-06
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多