uni-app 组件在APP中用驼峰命名不管用

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 组件在APP中用驼峰命名不管用

示例代码:

import listView from "./components/list-view.vue";  

<list-view type="1" :dataList="dataList" @cheng="cheng"></list-view>

操作步骤:

import listView from "./components/list-view.vue";  

<list-view type="1" :dataList="dataList" @cheng="cheng"></list-view>

组件list-view 不能正常显示

预期结果:

组件list-view 可以正常显示

实际结果:

import listView from "./components/list-view.vue";  

<list-view type="1" :dataList="dataList" @cheng="cheng"></list-view>  
//组件list-view 不能正常显示
import listView from "./components/list-view.vue";  
<listView type="1" :dataList="dataList" @cheng="cheng"></listView>  
这种写法才能正常显示

两种写法都能正常显示

bug描述:

import listView from "./components/list-view.vue";  

<list-view type="1" :dataList="dataList" @cheng="cheng"></list-view>

这种用法在APP中不管用;

必须用listView才可以

import listView from "./components/list-view.vue";  
<listView type="1" :dataList="dataList" @cheng="cheng"></listView>

image

项目信息 描述
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win10
HBuilderX类型 正式
HBuilderX版本 4.29
手机系统 Android
手机系统版本 Android 15
手机厂商 vivo
手机机型 iq11
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

4 回复

list-view在uniappx上是内置组件 估计是冲突了 应该是这个原因 你这个自定义组件 可以换个名字 或者就先用驼峰的写法


在uni-app中,组件命名确实需要注意一些平台差异,尤其是在原生APP开发中,某些命名规范可能与Web开发有所不同。虽然uni-app设计初衷是为了跨平台开发,尽量统一API和命名规范,但在特定平台上(如iOS和Android),原生组件可能仍然遵循各自平台的命名习惯。针对你提到的“驼峰命名不管用”的问题,这通常与原生组件的属性传递有关。

在uni-app中,组件属性在HTML模板中通常使用kebab-case(短横线命名法),而在JavaScript或TypeScript代码中则可以使用camelCase(驼峰命名法)。然而,当这些属性传递到原生组件时,可能因平台差异而导致不被正确识别。

示例代码说明

假设你有一个自定义组件MyComponent.vue,其中有一个属性myCustomProperty

<template>
  <view>
    <!-- 在模板中使用kebab-case -->
    <custom-view :my-custom-property="value"></custom-view>
  </view>
</template>

<script>
export default {
  props: {
    // 在JavaScript中使用camelCase
    myCustomProperty: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      value: 'Hello, uni-app!'
    };
  }
}
</script>

如果custom-view是一个原生组件或者封装了原生组件的uni-app组件,你可能需要确保属性在传递到原生层时是正确的格式。在某些情况下,你可能需要在组件内部进行属性名的转换,或者确保在父组件中传递属性时使用kebab-case,即使你在Vue组件内部使用camelCase。

注意事项

  • 平台差异:不同平台(如微信小程序、H5、App等)对属性名的处理可能有所不同。在App端,尤其是iOS和Android,原生组件可能更严格地遵循平台的命名规范。
  • 属性传递:确保在模板中绑定属性时使用kebab-case,这是Vue推荐的实践,也是与HTML属性命名规范一致的。
  • 文档查阅:查阅uni-app官方文档和相关平台(如微信小程序、Android、iOS)的文档,了解属性命名的具体要求。

总之,虽然uni-app努力统一跨平台的开发体验,但在处理原生组件时,仍然需要注意平台特定的命名规范。如果遇到驼峰命名不被识别的问题,可以尝试使用kebab-case进行属性命名,或者在组件内部进行适当的转换处理。

回到顶部