UI

抽屉与弹窗

https://www.yuque.com/yingxi/readings/so7qk6#F3GDS
image.png
弹窗属于被动流程的交互,适用于用户无预期的场景。
抽屉属于主动流程的交互流程,属于用户需要进行的下一步操作逻辑。
所以理论上来讲,弹窗用于必须解决的错误提示,重要信息的确认,必须先完成的流程 等不可中断的场景。
其他 可逆的,可直接取消的(点击弹层及取消),都可使用抽屉式的交互。

Programming

层级递进,状态隔离

唯一变量存储 层信息,每次递进(作用域/上下文变更),调用一次 xxxStart,每层 + 1,所以每一层的执行,无论是否异步,结束都需要通过调用 xxxEnd 来进行,这样外部的其他执行中内容,始终通过 isXxx 就可获得需要等待的 层进操作,是否完全结束。

  1. export const BatchCount = { value: 0 }
  2. export const batchStart = () => {
  3. BatchCount.value++
  4. }
  5. export const batchEnd = () => {
  6. BatchCount.value--
  7. if (BatchCount.value === 0) {
  8. excutePendingReactions()
  9. }
  10. }
  11. export const isBatching = () => BatchCount.value > 0

一个简单的运行中调度策略,非常适合 同步执行 的场景,可以实现跨作用域层级 的 运行中状态&层级确认,通过 value 值可以获得已经步进/变更的作用域信息。被 xxxStart 和 xxxEnd 调用包裹的内容,运行时状态是独立的,且该状态与当前上下文无关,是完全隔离的。
如果有异步,可能就会产生干扰,存在异步的场景需要注意 end 的正确调用,或者异步时间片的切分。

可用于 scope记录,batch计数