UI
抽屉与弹窗
https://www.yuque.com/yingxi/readings/so7qk6#F3GDS
弹窗属于被动流程的交互,适用于用户无预期的场景。
抽屉属于主动流程的交互流程,属于用户需要进行的下一步操作逻辑。
所以理论上来讲,弹窗用于必须解决的错误提示,重要信息的确认,必须先完成的流程 等不可中断的场景。
其他 可逆的,可直接取消的(点击弹层及取消),都可使用抽屉式的交互。
Programming
层级递进,状态隔离
唯一变量存储 层信息,每次递进(作用域/上下文变更),调用一次 xxxStart,每层 + 1,所以每一层的执行,无论是否异步,结束都需要通过调用 xxxEnd 来进行,这样外部的其他执行中内容,始终通过 isXxx 就可获得需要等待的 层进操作,是否完全结束。
export const BatchCount = { value: 0 }
export const batchStart = () => {
BatchCount.value++
}
export const batchEnd = () => {
BatchCount.value--
if (BatchCount.value === 0) {
excutePendingReactions()
}
}
export const isBatching = () => BatchCount.value > 0
一个简单的运行中调度策略,非常适合 同步执行 的场景,可以实现跨作用域层级 的 运行中状态&层级确认,通过 value 值可以获得已经步进/变更的作用域信息。被 xxxStart 和 xxxEnd 调用包裹的内容,运行时状态是独立的,且该状态与当前上下文无关,是完全隔离的。
如果有异步,可能就会产生干扰,存在异步的场景需要注意 end 的正确调用,或者异步时间片的切分。
可用于 scope记录,batch计数