fix(canvas): 画布批量生成 - 修复节点丢失、资源引用及刷新状态不一致
This commit is contained in:
1 parent
dc1ad68015
commit
6f45240599
26 files changed
+533
-179
No files matched your search
@@ -0,0 +1,16 @@
|
||||
type StateUpdate<T> = T | ((current: T) => T);
|
||||
|
||||
/** 编辑命令同步提交到 ref;React 只接收快照,不执行含副作用、可被重放的 updater。 */
|
||||
export function createCanvasStateWriter<T>(
|
||||
ref: { current: T },
|
||||
publish: (snapshot: T) => void,
|
||||
normalize: (before: T, after: T) => T = (_, after) => after,
|
||||
) {
|
||||
return (update: StateUpdate<T>) => {
|
||||
const before = ref.current;
|
||||
const after = normalize(before, typeof update === "function" ? (update as (current: T) => T)(before) : update);
|
||||
// 兼容先提交 ref 再发布快照的调用方;相同引用不代表 React 已收到它。
|
||||
ref.current = after;
|
||||
publish(after);
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user