dromara / lamp-cloud

lamp-cloud 支持jdk21、jdk17、jdk11、jdk8,ta基于 SpringCloud + SpringBoot 开发的微服务中后台快速开发平台,专注于多租户(SaaS架构)解决方案,亦可作为普通项目(非SaaS架构)的基础开发框架使用,目前已实现插拔式数据库隔离、SCHEMA隔离、字段隔离 等租户隔离方案。
http://tangyh.top
Apache License 2.0
5.5k stars 1.67k forks source link

ApiSelect #289

Closed Angle-bo closed 1 year ago

Angle-bo commented 1 year ago

版本信息:

lamp-web-pro build: 4.13.1

问题描述:

ApiSelect onChange 事件回调值丢失

报错截图

lamp-web-pro截图如下: lamp-pro

[vue-vben-admin]截图如下: vbean

重现步骤

进入页面,第一次变更Select选项时,change数据丢失。 vben-admin中没发现这个问题。

支持一下

如果该issue帮助了你, 麻烦给项目点个star, 并给当前issue回复一下 “👍” 或者 “已解决”.

Angle-bo commented 1 year ago

第二次切换Select选项时,onChange数据不对。 应该是ApiSelect====>: 5 {label: '选项5', value: '5'} 但是控制台输出: image

zuihou commented 1 year ago

useFormItem.ts 中 nextTick(() => { }) ; 被我注释了, 原因是之前的版本 不管加不加 nextTick 都有bug。

加上 nextTick 后,目前简单测试了能解决你提的问题和我之前发现的问题。 你可以试试,发现有什么其他问题及时反馈。我也多调试调试

      nextTick(() => {
        emit?.(changeEvent, value, ...(toRaw(unref(emitData)) || []));
      });
zuihou commented 1 year ago

因为之前发现加你 nextTick 还会影响 ApiTree和ApiRadioGroup

Angle-bo commented 1 year ago

好的,我再看看,因为我别的地方有用ApiTree和ApiRadioGroup。所以还不能简单的放开nextTick(() => { }) ;

zuihou commented 1 year ago

刚测试 加上 nextTick, ApiRadioGroup 和 ApiSelect 都没问题了。

Angle-bo commented 1 year ago

加上 nextTick会导致第一次,数据校验报错 临时解决办法:

  1. onOptionsChange获取到Select所有选项,进行存储

  2. 在onChange事件中通过获取的value,去存储的所有选项中找到对应的完整对象