useFormState: MPA submissions to a different page (#27372)

The permalink option of useFormState controls which page the form is
submitted to during an MPA form submission (i.e. a submission that
happens before hydration, or when JS is disabled). If the same
useFormState appears on the resulting page, and the permalink option
matches, it should receive the form state from the submission despite
the fact that the keypaths do not match.

So the logic for whether a form state instance is considered a match is:
- Both instances must be passed the same action signature
- If a permalink is provided, the permalinks must match.
- If a permalink is not provided, the keypaths must match.

Currently, if there are multiple matching useFormStates, they will all
match and receive the form state. We should probably only match the
first one, and/or warn when this happens. I've left this as a TODO for
now, pending further discussion.

DiffTrain build for commit https://github.com/facebook/react/commit/caa716d50bdeef3a1ac5e3e0cfcc14f4d91f2028.
This commit is contained in:
acdlite
2023-09-14 05:11:37 +00:00
parent bb93490b7e
commit 252ec6cbf2
7 changed files with 9 additions and 9 deletions
@@ -23998,7 +23998,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-canary-a6e4791b1-20230913";
var ReactVersion = "18.3.0-canary-caa716d50-20230914";
// Might add PROFILE later.
@@ -8620,7 +8620,7 @@ var devToolsConfig$jscomp$inline_1028 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-canary-a6e4791b1-20230913",
version: "18.3.0-canary-caa716d50-20230914",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1227 = {
@@ -8651,7 +8651,7 @@ var internals$jscomp$inline_1227 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-canary-a6e4791b1-20230913"
reconcilerVersion: "18.3.0-canary-caa716d50-20230914"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1228 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -9046,7 +9046,7 @@ var devToolsConfig$jscomp$inline_1070 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-canary-a6e4791b1-20230913",
version: "18.3.0-canary-caa716d50-20230914",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1268 = {
@@ -9077,7 +9077,7 @@ var internals$jscomp$inline_1268 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-canary-a6e4791b1-20230913"
reconcilerVersion: "18.3.0-canary-caa716d50-20230914"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1269 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -27,7 +27,7 @@ if (
}
"use strict";
var ReactVersion = "18.3.0-canary-a6e4791b1-20230913";
var ReactVersion = "18.3.0-canary-caa716d50-20230914";
// ATTENTION
// When adding new symbols to this file,
@@ -616,4 +616,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "18.3.0-canary-a6e4791b1-20230913";
exports.version = "18.3.0-canary-caa716d50-20230914";
@@ -619,7 +619,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "18.3.0-canary-a6e4791b1-20230913";
exports.version = "18.3.0-canary-caa716d50-20230914";
/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
@@ -1 +1 @@
a6e4791b11816374d015eb4531a82e6cf209c7f2
caa716d50bdeef3a1ac5e3e0cfcc14f4d91f2028