From bbe62ec2e81ef36c81eff4e9b6432dd4fa1a617f Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Tue, 29 Apr 2025 12:49:56 -0400 Subject: [PATCH] Hack to recover from reading the wrong Fiber --- packages/react-reconciler/src/ReactFiberHooks.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/react-reconciler/src/ReactFiberHooks.js b/packages/react-reconciler/src/ReactFiberHooks.js index 967be9be94fae..91ed949ca0851 100644 --- a/packages/react-reconciler/src/ReactFiberHooks.js +++ b/packages/react-reconciler/src/ReactFiberHooks.js @@ -3355,8 +3355,16 @@ export function requestFormReset(formFiber: Fiber) { ); } - const stateHook = ensureFormComponentIsStateful(formFiber); + let stateHook: Hook = ensureFormComponentIsStateful(formFiber); const newResetState = {}; + if (stateHook.next === null) { + // Hack alert. If formFiber is the workInProgress Fiber then + // we might get a broken intermediate state. Try the alternate + // instead. + // TODO: We should really stash the Queue somewhere stateful + // just like how setState binds the Queue. + stateHook = (formFiber.alternate: any).memoizedState; + } const resetStateHook: Hook = (stateHook.next: any); const resetStateQueue = resetStateHook.queue; dispatchSetStateInternal(