dillon1000/react
Commit
Browse files useFormState: Compare action signatures when reusing form state (#27370)
During an MPA form submission, useFormState should only reuse the form
state if same action is passed both times. (We also compare the key
paths.)
We compare the identity of the inner closure function, disregarding the
value of the bound arguments. That way you can pass an inline Server
Action closure:
```js
function FormContainer({maxLength}) {
function submitAction(prevState, formData) {
'use server'
if (formData.get('field').length > maxLength) {
return { errorMsg: 'Too many characters' };
}
// ...
}
return <Form submitAction={submitAction} />
}
```Changed paths14 files
First-parent comparisonpackages/react-client/src/ReactFlightReplyClient.js ModifiedM packages/react-dom/src/client/ReactDOMRoot.js ModifiedM packages/react-dom/src/server/ReactDOMFizzServerBrowser.js ModifiedM packages/react-dom/src/server/ReactDOMFizzServerBun.js ModifiedM packages/react-dom/src/server/ReactDOMFizzServerEdge.js ModifiedM packages/react-dom/src/server/ReactDOMFizzServerNode.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.js ModifiedM packages/react-reconciler/src/ReactFiberRoot.js ModifiedM packages/react-reconciler/src/ReactInternalTypes.js ModifiedM packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMForm-test.js ModifiedM packages/react-server/src/ReactFizzHooks.js ModifiedM packages/react-server/src/ReactFizzServer.js ModifiedM packages/react-server/src/ReactFlightActionServer.js ModifiedM packages/shared/ReactTypes.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…