dillon1000/react
Commit
Browse files Pass ref as normal prop (#28348)
Depends on: - #28317 - #28320 --- Changes the behavior of the JSX runtime to pass through `ref` as a normal prop, rather than plucking it from the props object and storing on the element. This is a breaking change since it changes the type of the receiving component. However, most code is unaffected since it's unlikely that a component would have attempted to access a `ref` prop, since it was not possible to get a reference to one. `forwardRef` _will_ still pluck `ref` from the props object, though, since it's extremely common for users to spread the props object onto the inner component and pass `ref` as a differently named prop. This is for maximum compatibility with existing code — the real impact of this change is that `forwardRef` is no longer required. Currently, refs are resolved during child reconciliation and stored on the fiber. As a result of this change, we can move ref resolution to happen only much later, and only for components that actually use them. Then we can remove the `ref` field from the Fiber type. I have not yet done that in this step, though.
Changed paths34 files
First-parent comparisonpackages/jest-react/src/JestReact.js ModifiedM packages/react-client/src/ReactFlightClient.js ModifiedM packages/react-devtools-shared/src/__tests__/legacy/storeLegacy-v15-test.js ModifiedM packages/react-dom-bindings/src/client/ReactDOMComponent.js ModifiedM packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js ModifiedM packages/react-dom-bindings/src/shared/ReactDOMUnknownPropertyHook.js ModifiedM packages/react-dom/src/__tests__/ReactCompositeComponent-test.js ModifiedM packages/react-dom/src/__tests__/ReactFunctionComponent-test.js ModifiedM packages/react-dom/src/__tests__/refs-test.js ModifiedM packages/react-noop-renderer/src/createReactNoop.js ModifiedM packages/react-reconciler/src/ReactChildFiber.js ModifiedM packages/react-reconciler/src/ReactFiberBeginWork.js ModifiedM packages/react-reconciler/src/__tests__/ReactFiberRefs-test.js ModifiedM packages/react-reconciler/src/__tests__/ReactIncrementalSideEffects-test.js ModifiedM packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js ModifiedM packages/react-reconciler/src/__tests__/ReactMemo-test.js ModifiedM packages/react-refresh/src/__tests__/ReactFresh-test.js ModifiedM packages/react-server/src/ReactFizzServer.js ModifiedM packages/react-server/src/ReactFlightServer.js ModifiedM packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.internal.js ModifiedM packages/react/src/__tests__/ReactCreateElement-test.js ModifiedM packages/react/src/__tests__/ReactElementClone-test.js ModifiedM packages/react/src/__tests__/ReactJSXElementValidator-test.js ModifiedM packages/react/src/__tests__/ReactJSXRuntime-test.js ModifiedM packages/react/src/__tests__/ReactJSXTransformIntegration-test.js ModifiedM packages/react/src/jsx/ReactJSXElement.js ModifiedM packages/shared/ReactFeatureFlags.js ModifiedM packages/shared/forks/ReactFeatureFlags.native-fb.js ModifiedM packages/shared/forks/ReactFeatureFlags.native-oss.js ModifiedM packages/shared/forks/ReactFeatureFlags.test-renderer.js ModifiedM packages/shared/forks/ReactFeatureFlags.test-renderer.native.js ModifiedM packages/shared/forks/ReactFeatureFlags.test-renderer.www.js ModifiedM packages/shared/forks/ReactFeatureFlags.www.js ModifiedM scripts/jest/TestFlags.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…