ReactForwardRef.js — react Source File
Architecture documentation for ReactForwardRef.js, a javascript file in the react codebase. 1 imports, 5 dependents.
Entity Profile
Dependency Diagram
graph LR a6db0cea_191e_cee9_6c7a_239cf4d7ebfe["ReactForwardRef.js"] e1e1de60_2be4_0643_45fb_e2c306735427["ReactSymbols"] a6db0cea_191e_cee9_6c7a_239cf4d7ebfe --> e1e1de60_2be4_0643_45fb_e2c306735427 ffdf54f0_7e34_f1e9_1504_9dbadb0fbac5["ReactClient.js"] ffdf54f0_7e34_f1e9_1504_9dbadb0fbac5 --> a6db0cea_191e_cee9_6c7a_239cf4d7ebfe a893f937_cfbc_33f8_94ec_23cb5000691e["ReactServer.experimental.development.js"] a893f937_cfbc_33f8_94ec_23cb5000691e --> a6db0cea_191e_cee9_6c7a_239cf4d7ebfe 8510e4c8_924c_b1b8_d0a0_11cb99b570c0["ReactServer.experimental.js"] 8510e4c8_924c_b1b8_d0a0_11cb99b570c0 --> a6db0cea_191e_cee9_6c7a_239cf4d7ebfe 6274036e_add3_9702_84fb_266b97b7660a["ReactServer.fb.js"] 6274036e_add3_9702_84fb_266b97b7660a --> a6db0cea_191e_cee9_6c7a_239cf4d7ebfe a86f40a1_cfab_7bca_7368_f11f9ee52c80["ReactServer.js"] a86f40a1_cfab_7bca_7368_f11f9ee52c80 --> a6db0cea_191e_cee9_6c7a_239cf4d7ebfe style a6db0cea_191e_cee9_6c7a_239cf4d7ebfe fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @noflow
*/
import {REACT_FORWARD_REF_TYPE, REACT_MEMO_TYPE} from 'shared/ReactSymbols';
export function forwardRef<Props, ElementType: React$ElementType>(
render: (
props: Props,
ref: React$RefSetter<React$ElementRef<ElementType>>,
) => React$Node,
) {
if (__DEV__) {
if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
console.error(
'forwardRef requires a render function but received a `memo` ' +
'component. Instead of forwardRef(memo(...)), use ' +
'memo(forwardRef(...)).',
);
} else if (typeof render !== 'function') {
console.error(
'forwardRef requires a render function but was given %s.',
render === null ? 'null' : typeof render,
);
} else {
if (render.length !== 0 && render.length !== 2) {
console.error(
'forwardRef render functions accept exactly two parameters: props and ref. %s',
render.length === 1
? 'Did you forget to use the ref parameter?'
: 'Any additional parameter will be undefined.',
);
}
}
if (render != null) {
if (render.defaultProps != null) {
console.error(
'forwardRef render functions do not support defaultProps. ' +
'Did you accidentally pass a React component?',
);
}
}
}
const elementType = {
$$typeof: REACT_FORWARD_REF_TYPE,
render,
};
if (__DEV__) {
let ownName;
Object.defineProperty(elementType, 'displayName', {
enumerable: false,
configurable: true,
get: function () {
return ownName;
},
set: function (name) {
ownName = name;
// The inner component shouldn't inherit this display name in most cases,
// because the component may be used elsewhere.
// But it's nice for anonymous functions to inherit the name,
// so that our component-stack generation logic will display their frames.
// An anonymous function generally suggests a pattern like:
// React.forwardRef((props, ref) => {...});
// This kind of inner function is not used elsewhere so the side effect is okay.
if (!render.name && !render.displayName) {
Object.defineProperty(render, 'name', {
value: name,
});
render.displayName = name;
}
},
});
}
return elementType;
}
Domain
Dependencies
- ReactSymbols
Imported By
Source
Frequently Asked Questions
What does ReactForwardRef.js do?
ReactForwardRef.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain.
What does ReactForwardRef.js depend on?
ReactForwardRef.js imports 1 module(s): ReactSymbols.
What files import ReactForwardRef.js?
ReactForwardRef.js is imported by 5 file(s): ReactClient.js, ReactServer.experimental.development.js, ReactServer.experimental.js, ReactServer.fb.js, ReactServer.js.
Where is ReactForwardRef.js in the architecture?
ReactForwardRef.js is located at packages/react/src/ReactForwardRef.js (domain: BabelCompiler, directory: packages/react/src).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free