dillon1000/react

Commit

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} />
}
```
Browse files
Changed paths14 files
First-parent comparison
M packages/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 Modified
Patch

Files changed

Rendering syntax-highlighted changes…