uni-app vue3开发时编译运行到京东小程序 input组件的@input方法失效

uni-app vue3开发时编译运行到京东小程序 input组件的@input方法失效

操作步骤:

  • 使用vue3开发uniapp
  • 页面中放置一个input组件,并使用v-model(或者@input事件)进行数据绑定
  • 运行到京东小程序
  • 在京东小程序页面输入框组件中进行文字输入
  • 控制台报警告

预期结果:

  • 在京东小程序页面输入框组件中进行文字输入后,控制台输出输入的文字信息

实际结果:

  • 控制台报警告
  • Do not have e0 handler in component: pages/addressEdit/addressEdit. Please make sure that e0 handler has been defined in pages/addressEdit/addressEdit.

bug描述:

vue3开发uniapp,编译运行到京东小程序,input组件@input方法失效,并在京东开发者工具报如下警告:

开发环境 版本号 项目创建方式
Mac 14.2.1 (23C71) HBuilderX
HBuilderX 3.99
第三方开发者工具 V1.15.3
基础库 v1.13.4
京东APP 12.2.0

更多关于uni-app vue3开发时编译运行到京东小程序 input组件的@input方法失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

19 回复

用示例代码hello uni-app能出现你的问题吗?

更多关于uni-app vue3开发时编译运行到京东小程序 input组件的@input方法失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


是的,刚刚使用vue3运行了示例代码hello uni-app也复现了该问题

回复 1***@qq.com: 直接使用京东小程序(不用uni-app)是否正常?

回复 DCloud_UNI_Anne: 直接使用京东小程序使用正常

临时解决方案
附件替换至 hx根目录/D:\HBuilderX\HBuilderX_alpha\plugins\uniapp-cli-vite\node_modules[@dcloudio](/user/dcloudio)\uni-mp-jd\dist 重新运行

您好,目前问题是我将这个文件替换之后,onPullDownRefresh 与 onReachBottom 方法失效

回复 1***@qq.com: 那不应该,替换之前就可以触发 onPullDownRefresh 和 onReachBottom ?

回复 1***@qq.com: 下载新的附件替换然后重新运行试试

回复 DCloud_UNI_LXH: 替换之前可以触发onPullDownRefresh 和 onReachBottom

回复 DCloud_UNI_LXH: 新的附件还是5月11号的那个附件吗?

回复 1***@qq.com: 是的,我只修改了附件

请问目前是要放弃京东小程序了吗?为什么这种问题不修复呢

已复现,已转给相关人员排查,已加分,感谢您的反馈!

请问目前这个问题,是否可以使用uniapp文档中的小程序自定义组件,来使用原生京东小程序代码去解决吗?

相同问题解决了吗?

1、上面的附件可以解决该问题 2、可以使用 jdcomponent 功能,自己定义一套 input 组件

回复 1***@qq.com: 谢谢

HBuilderX 4.18.2024060311-alpha 已修复。

uni-app 中使用 Vue 3 开发时,如果在京东小程序中遇到 input 组件的 @input 方法失效的问题,可能是由于京东小程序的实现机制或 uni-app 的兼容性问题导致的。以下是一些可能的解决方案和排查步骤:


1. 确认 @input 的绑定方式

确保 @input 的绑定方式正确,且事件处理函数被正确定义。例如:

<template>
  <input type="text" @input="handleInput" />
</template>

<script setup>
const handleInput = (event) => {
  console.log('Input value:', event.detail.value);
};
</script>

在京东小程序中,input 事件的值通常是通过 event.detail.value 获取的,而不是 event.target.value


2. 使用 v-model 替代 @input

如果 @input 失效,可以尝试使用 v-model 实现双向绑定:

<template>
  <input type="text" v-model="inputValue" />
</template>

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

const inputValue = ref('');
</script>

v-model 在大多数情况下可以正常工作,并且会自动处理 input 事件。


3. 检查京东小程序的兼容性

京东小程序的 input 组件可能与 uni-app 的实现存在差异。可以尝试使用原生京东小程序的语法来测试 input 事件是否正常工作:

<input type="text" bindinput="handleInput" />
Page({
  handleInput(event) {
    console.log('Input value:', event.detail.value);
  }
});

如果原生语法可以正常工作,说明问题可能出在 uni-app 的适配层。


4. 更新 uni-app 版本

确保使用的 uni-app 版本是最新的,因为 uni-app 团队会不断修复各平台的兼容性问题。可以通过以下命令更新:

npm install @dcloudio/uni-app@latest

5. 使用 [@change](/user/change) 事件

如果 @input 事件失效,可以尝试使用 [@change](/user/change) 事件作为替代:

<template>
  <input type="text" [@change](/user/change)="handleChange" />
</template>

<script setup>
const handleChange = (event) => {
  console.log('Input value:', event.detail.value);
};
</script>
回到顶部