MCPcopy Create free account
hub / github.com/RobPruzan/react-scratch / useEffect

Function useEffect

src/react/core.ts:1420–1467  ·  view source on GitHub ↗
(cb: () => void, deps: Array<unknown>)

Source from the content-addressed store, hash-verified

1418
1419// this is wrong, need to potentially update deps and cb
1420export const useEffect = (cb: () => void, deps: Array<unknown>) => {
1421 if (!currentTreeRef.renderTree) {
1422 throw new Error("Cannot call use effect outside of a react component");
1423 }
1424 if (!currentTreeRef.renderTree.currentlyRendering) {
1425 throw new Error("Component being called outside of react internals");
1426 }
1427 const currentlyRendering = currentTreeRef.renderTree?.currentlyRendering;
1428
1429 if (!currentlyRendering) {
1430 throw new Error("Cannot call use effect outside of a react component");
1431 }
1432
1433 if (currentlyRendering.kind === "empty-slot") {
1434 throw new Error("A slot will never call a hook");
1435 }
1436
1437 const currentStateOrder =
1438 currentTreeRef.renderTree.currentLocalCurrentHookOrder;
1439 currentTreeRef.renderTree.currentLocalCurrentHookOrder += 1;
1440 if (!currentlyRendering.hasRendered) {
1441 currentlyRendering.hooks.push({
1442 kind: "effect",
1443 cb,
1444 deps,
1445 cleanup: null,
1446 });
1447 }
1448
1449 const effect = currentlyRendering.hooks[currentStateOrder];
1450
1451 if (effect.kind !== "effect") {
1452 throw new Error(
1453 "Called hooks in different order compared to previous render"
1454 );
1455 }
1456
1457 if (
1458 effect.deps.length !== deps.length ||
1459 !effect.deps.every((dep, index) => {
1460 const newDep = deps[index];
1461 return newDep === dep;
1462 })
1463 ) {
1464 effect.deps = deps;
1465 effect.cb = cb;
1466 }
1467};
1468
1469export const useMemo = <T>(fn: () => T, deps: Array<unknown>): T => {
1470 if (!currentTreeRef.renderTree) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected