寒山远黛
寒山远黛
  • 发布:2023-03-15 13:58
  • 更新:2023-08-19 20:29
  • 阅读:263

【报Bug】vue3 下写 jsx 文件,image 标签无法正常显示

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 12.6.3

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: redmi k50

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: CLI

CLI版本号: 3.0.0-alpha-3070720230314001

操作步骤:
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project  
pnpm add @vitejs/plugin-vue-jsx -D  
// 一系列将 vue-jsx 添加到项目里的操作

写一个简单的带图片的组件

import { defineComponent } from "vue";  

interface Props {  
  imgSrc: string;  
}  

export default defineComponent({  
  props: {  
    imgSrc: { type: String as string, required: true, default: "" },  
  },  
  setup({ imgSrc }: Props) {  
    return () => (  
      <image src="https://ask.dcloud.net.cn/uploads/avatar/001/69/58/05_avatar_mid.jpg?v=1615114858">  
      </image>  
    );  
  },  
});

在页面将其引用,h5 上看不到图片,因为标签用的是 <image> 浏览器不能识别,运行到手机端可以正常显示;改为 <img> 标签,浏览器能正常显示,手机端无法正常显示。

预期结果:

写 tsx 生成出的页面和 写 vue 生成出的页面一致。

实际结果:

tsx 中返回的标签没有被转化。

bug描述:

通过 @vitejs/plugin-vue-jsx 插件写 jsx 文件时,如果返回的 html 标签中有 <image> 标签时,不会转换成 uniapp 的标签,并且在页面上不会显示,如果是 h5 需要手动改成 <img> 标签,但这样在手机上就无法正常显示。

并且除 <image> 标签外,<view> 标签也不能像用 vue 文件写的页面一样转换成 <uni-view> 一类啥的,只是 <view> 标签。

2023-03-15 13:58 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

有解决办法吗?内置组件目前我都无法使用

  • j***@vip.qq.com

    我发现了出问题的原因, 要使用jsx,必须在src目录下新建vite.config,并且加载jsx插件, 这样把src拖到hb里面就会造成easycom失效, 删掉vite.config就正常了,还需要研究下vite.config是不是和hb默认的配置有冲突。

    2023-09-06 19:03

  • 2***@qq.com

    回复 j***@vip.qq.com: 我感觉是他vite配置里面有个uni插件,这个插件干预了模板解析过程。现在就是配置vite过后,jsx能用但是默认的组件不能正常的渲染。jsx编译过程没有经过他的rollup插件.

    2023-09-14 16:09

  • a***@163.com

    这个问题后来解决了吗 老哥

    2024-04-22 14:38

要回复问题请先登录注册