Gyron.js 的组件更新

97 阅读1分钟

gyron.cc/docs/compon…
Gyron.js 的组件更新也可以叫做任务调度,在多个依赖数据更新时,每次的更新任务会被推送到一个 Scheduler List 中,然后再通过 Micro Task 依次执行更新,在压入到 List 中之前会检查是否有相同的更新任务,如果有,那么将会把上一次的更新任务剔除,因为下一帧的更新任务的数据是最新的,不需要重复更新。

当组件依赖的数据发生变更时,会将当前任务推送到 Scheduler List 中,然后在下一个 Micro Task 中对这个队列进行更新。换句话说就是同时修改一份变量,组件只会更新一次,如果同步修改多份数据,那么在下一个 Micro Task 中会以入栈顺序依次更新。

import { useValue } from "gyron";

const App = () => {
  const v1 = useValue(0);
  const v2 = useValue(0);

  setTimeout(() => {
    v1.value = 1;
    v2.value = 1;
  });

  onAfterUpdate(() => {
    console.log("updated");
  });

  return (
    <div>
      {v1.value} / {v2.value}
    </div>
  );
};

在 setTimeout 中我们同时修改 v1 和 v2 的值,这个时候 App 组件只会更新一次,然后打印日志updated