Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动,Dialog.alert 需要关闭两次 #191

Open
HUIDIZ opened this issue Jun 22, 2022 · 6 comments

Comments

@HUIDIZ
Copy link

HUIDIZ commented Jun 22, 2022

组件

组件名称:Modal、TimerPicker 、Dialog

版本

  • 组件版本:"tuya-panel-kit": "~4.9.4"
  • react 版本:"16.8.3",
  • react-native 版本:"0.59.10",

概述

Bug 问题概述
1、Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动。如果不加onlyLastModalVisible,第二个Modal关闭,第一个Modal会闪动出现
2、TimerPicker 时间段选择器时,只需要选择时间而非时间段。根据api文档使用singlePicker属性。但是ui界面会有一个横杠
微信图片_20220622114031
3 、Dialog.alert 点击关闭还要再点一次

重现步骤

  1. 在界面上使Modal 显示
  2. 点击时间选择器。
  3. 关闭Modal 。
  4. Dialog.alert 需要关闭两次(如下视频)
video.4.mp4

Bug 行为

Bug 的表现行为
整个面板卡死。
时间段选择器ui界面右侧会有一个横杠
Dialog.alert 点击关闭还要再点一次

期望行为

组件的正确行为
整个面板流畅。
不加onlyLastModalVisible,第二个Modal关闭,第一个Modal会闪动出现
时间段选择器ui界面右侧没有横杠
正常关闭Dialog.alert

期望发布日期

期望 bug 解决后发布的正式版本号或日期 2022-06-27

附件

附上图片或日志

68dd9c0c27dbee405d5010928be65333.mp4

微信图片_20220622150013
企业微信截图_16558847032850

@HUIDIZ HUIDIZ changed the title Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动 Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动,Dialog.alert 需要关闭两次 Jun 22, 2022
@ShinyLeee
Copy link
Collaborator

ShinyLeee commented Jun 22, 2022

1、Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动 --- 无法复现
1、 如果不加onlyLastModalVisible,第二个Modal关闭,第一个Modal会闪动出现 --- 正常现象,由于第一个 Modal 的 visible 仍然是 true,所以会出现,如果要解决这个问题,在第二个Modal关闭的时候一起将第一个 Modal 依赖的 visible 设置成 false。
2、TimerPicker 时间段选择器时,只需要选择时间而非时间段。根据api文档使用singlePicker属性。但是ui界面会有一个横杠 --- 检查下是不是配置了 symbol 这个 props,设置为 false 应该可以解决。
3、Dialog.alert 点击关闭还要再点一次 --- 代码上下文不全,无法确认问题,补充一下。

@HUIDIZ
Copy link
Author

HUIDIZ commented Jun 23, 2022

1、卡死无法复现?不是发了源码+录屏吗?
2、在第二个Modal关闭的时候一起将第一个 Modal 依赖的 visible 设置成 false。但是我的第一个 Modal是要显示的。。。
3、 <TimerPicker style={{ height: 200}} singlePicker={true} startTime={newTimeMin} is12Hours={false} onTimerChange={(newTimeMin) => setNewTimeMin(newTimeMin)} /> 这是源代码,没有配置了 symbol 这个 props

@HUIDIZ
Copy link
Author

HUIDIZ commented Jun 23, 2022

3、TimerPicker添加symbol={‘’}解决了

@ShinyLeee
Copy link
Collaborator

1、卡死无法复现?不是发了源码+录屏吗? 2、在第二个Modal关闭的时候一起将第一个 Modal 依赖的 visible 设置成 false。但是我的第一个 Modal是要显示的。。。 3、 <TimerPicker style={{ height: 200}} singlePicker={true} startTime={newTimeMin} is12Hours={false} onTimerChange={(newTimeMin) => setNewTimeMin(newTimeMin)} /> 这是源代码,没有配置了 symbol 这个 props

1、可复现了,已定位,具体解决方式会再看下。
2、如果你第一个 Modal 要显示,那肯定会通过动画闪动出现的。

@ShinyLeee
Copy link
Collaborator

ShinyLeee commented Jun 23, 2022

1、Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动 --- 无法复现 1、 如果不加onlyLastModalVisible,第二个Modal关闭,第一个Modal会闪动出现 --- 正常现象,由于第一个 Modal 的 visible 仍然是 true,所以会出现,如果要解决这个问题,在第二个Modal关闭的时候一起将第一个 Modal 依赖的 visible 设置成 false。 2、TimerPicker 时间段选择器时,只需要选择时间而非时间段。根据api文档使用singlePicker属性。但是ui界面会有一个横杠 --- 检查下是不是配置了 symbol 这个 props,设置为 false 应该可以解决。 3、Dialog.alert 点击关闭还要再点一次 --- 代码上下文不全,无法确认问题,补充一下。

3、Dialog 和 Modal 不建议同时使用,如果非要这么用目前只能这么处理,在 dialog close 完毕后再去 set modal visible 为 false

    Dialog.alert({
      title: '提示',
      subTitle: '错误提示错误提示错误提示错误提示错误提示',
      confirmText: '确认',
      onConfirm: (data, { close }) => {
        close(() => {
          setDrawerVisible1(false);
        });
      },
    });

@HUIDIZ
Copy link
Author

HUIDIZ commented Jun 24, 2022

1、Modal 加上onlyLastModalVisible={false} 面板就会卡死点不动 --- 无法复现 1、 如果不加onlyLastModalVisible,第二个Modal关闭,第一个Modal会闪动出现 --- 正常现象,由于第一个 Modal 的 visible 仍然是 true,所以会出现,如果要解决这个问题,在第二个Modal关闭的时候一起将第一个 Modal 依赖的 visible 设置成 false。 2、TimerPicker 时间段选择器时,只需要选择时间而非时间段。根据api文档使用singlePicker属性。但是ui界面会有一个横杠 --- 检查下是不是配置了 symbol 这个 props,设置为 false 应该可以解决。 3、Dialog.alert 点击关闭还要再点一次 --- 代码上下文不全,无法确认问题,补充一下。

3、Dialog 和 Modal 不建议同时使用,如果非要这么用目前只能这么处理,在 dialog close 完毕后再去 set modal visible 为 false

    Dialog.alert({
      title: '提示',
      subTitle: '错误提示错误提示错误提示错误提示错误提示',
      confirmText: '确认',
      onConfirm: (data, { close }) => {
        close(() => {
          setDrawerVisible1(false);
        });
      },
    });

你的方法可以解决,但是会提示语法有误。改成红框可以解决
17

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants