Closed guangliang2019 closed 2 months ago
The latest updates on your projects. Learn more about Vercel for Git ↗︎
Name | Status | Preview | Comments | Updated (UTC) |
---|---|---|---|---|
prototype-ui | ✅ Ready (Inspect) | Visit Preview | 💬 Add feedback | Aug 28, 2024 2:50pm |
trigger 的设计嗯这下父级挺好确定了 不过不使用 this._contextValue,调用 provider 的 setContext (notify = false) 好像也是相同效果呀
区别在于 consumer 默认并不持有 setContext 方法,setContext 必须由 provider 进行封装后分发,或者干脆不分发,consumer 通知其他 consumer 的途径比较受限。
这样数据流的整体设计还是倾向于自顶向下的,只不过给 consumer 开放了惰性的更新 context 能力(因为不会立刻通知所以很适合更新一些不会立刻生效的东西,例如事件函数指针)
这次 PR 主要解决两个问题:
每个 consumer 各自独立维护一份 context 并不合理,现在改成与 provider 共享同一个 context 对象的引用,也就是说
现在基本每个组件都会有 trigger,例如 tooltip 是 hover tooltipTrigger 一段时间之后弹出提示,dialog 是点击 dialogTrigger 触发弹窗,button 本身就是一个 trigger,点击时触发触发点击事件等等