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

【drawer】优化重构 #547

Open
igauch opened this issue Jan 15, 2024 · 0 comments
Open

【drawer】优化重构 #547

igauch opened this issue Jan 15, 2024 · 0 comments

Comments

@igauch
Copy link
Contributor

igauch commented Jan 15, 2024

历史 drawer

service

  1. service 打开的还是 DrawerComponent

component

  1. 会立即创建一个 overlay 出来,其实就是实例化,只是通过控制样式来达到显示隐藏

问题

component

  1. 未打开前不应该先实例化

service

  1. 打开会有两个 overlay 实例
  2. 关闭时会立即发出 close 事件并销毁 service 创建的 overlay,所以关闭动画就看不到了

现状

  1. 使用 service 时关闭会销毁;使用组件方式时,因为是跟随组件的生命周期,所以关闭并不会销毁实例
  2. 使用服务多次调用 open 会先销毁上一个再创建出一个新的,但对于组件方式因为 visible 没变,所以并没有任何的改变。

改进

目标

  1. 未打开前不应该先实例化
  2. service 方式不应该存在两个 overlay
  3. 关闭时应该有动效

设计

  1. service 是创建 drawer 的唯一实现,component 只是 service 的一个包装
  2. 原来 DrawerComponent 改成内置的抽屉组件,用来定义抽屉组件的渲染
  3. 关闭事件分为关闭前和完成关闭两个事件,动画完成后再发出完成关闭事件
  4. 新增 disposeWhenHide 配置,用来区分实现 现状1 里组件和服务的差异,并暴露给用户,使其具有选择权。
  5. open 返回值由 DrawerComponent 改成一个新的 DrawerRef,因为 DrawerComponent 已经是一个内置的渲染定义了,不适合作为对外暴露的对象,也不包含需要对外暴露的能力。
  6. 新增 updateOption 方法,用于直接更新抽屉内容,而不是销毁重建(实现的有问题,需要改一下)

变更的影响

  1. 之前组件是唯一的实现,服务是组件的又一层包装;现在改成由内置组件定义抽屉渲染,服务作为唯一的实现,组件只是服务的一个包装。
    • 执行的先后顺序变了,配置的承载主体变了

验证点

添加单测,把下面完整的验证点都写一下

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

1 participant