uni-app vue3下wxcomponents下的自定义组件,编译到小程序后组件传参会丢失

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

uni-app vue3下wxcomponents下的自定义组件,编译到小程序后组件传参会丢失

示例代码:

<Painter  
  customStyle="position: absolute; top: -100vh; left: -100vw; z-index: -1;"  
  :widthPixels="750"  
  :palette="palette"  
  @imgOK="onImgOk"  
  @imgErr="onImgErr"  
>
</Painter>

操作步骤:

  • 使用wxcomponents自定义组件,并且使用vue的v-bind缩写传参

预期结果:

  • 编译后,参数正确传参

实际结果:

  • 编译后,除了事件,其他组件参数消失

bug描述:

  • vue3下wxcomponents下的自定义组件,编译到小程序后,组件传参会丢失

### 表格

| 项目         | 值               |
|--------------|------------------|
| 产品分类     | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows          |
| PC开发环境操作系统版本号 | 11               |
| HBuilderX版本号 | 4.28             |
| 第三方开发者工具版本号 | 1.06             |
| 基础库版本号 | 3.6              |
| 项目创建方式 | CLI              |
| CLI版本号   | 3.0.0-alpha-4020820240920001 |

4 回复

小程序不是自定义组件还根本不能使用v-bind,小程序就是依托大便


目前找到临时的办法解决了

回复 5***@qq.com: 说说呗,怎么临时解决的啊。(★ ω ★)

在uni-app中使用Vue 3,并且涉及到在小程序环境下使用自定义组件(wxcomponents)时,如果遇到组件传参丢失的问题,通常是由于组件定义、传参方式或编译配置不正确导致的。下面提供一个简单的示例,展示如何在uni-app中定义和传递参数给小程序自定义组件,并确保参数正确传递。

1. 定义自定义组件

首先,在components目录下创建一个自定义组件,例如my-component

my-component.vue

<template>
  <view>
    <text>{{ message }}</text>
  </view>
</template>

<script setup>
import { defineProps } from 'vue';

const props = defineProps({
  message: {
    type: String,
    default: 'Hello from MyComponent'
  }
});
</script>

2. 使用自定义组件

在页面的模板中使用这个自定义组件,并传递参数。

index.vue

<template>
  <view>
    <my-component :message="parentMessage"></my-component>
  </view>
</template>

<script setup>
import { ref } from 'vue';
import MyComponent from '@/components/my-component.vue';

const parentMessage = ref('Hello from Parent');
</script>

<script type="application/json">
{
  "components": {
    "my-component": "/components/my-component"
  }
}
</script>

3. 确保编译配置正确

pages.jsonmanifest.json中,确保你的项目配置支持小程序自定义组件。uni-app通常默认支持,但检查是否有特定配置需要调整。

4. 检查小程序开发者工具

  • 确保小程序开发者工具使用的是最新版本。
  • 在编译过程中查看控制台输出,是否有关于组件或参数的警告或错误信息。
  • 检查编译后的代码,看看自定义组件是否正确引入和注册。

5. 示例调试

如果参数仍然丢失,可以尝试以下调试步骤:

  • 在自定义组件的props接收处打印日志,确认是否接收到参数。
  • 在父组件传递参数的地方打印日志,确认参数值是否正确。
// 在自定义组件的script setup中
console.log('Received message:', props.message);

// 在父组件的script setup中
console.log('Parent message:', parentMessage.value);

通过以上步骤,你应该能够定位并解决uni-app Vue 3下小程序自定义组件传参丢失的问题。如果问题依旧存在,建议检查uni-app和Vue 3的官方文档,或寻求社区的帮助。

回到顶部