jsx: Remove unnecessary hasOwnProperty check (#28775)

Follow up to #28768.

The modern JSX runtime (`jsx`) does not need to check if each prop is a
direct property with `hasOwnProperty` because the compiler always passes
a plain object.

I'll leave the check in the old JSX runtime (`createElement`) since that
one can be called manually with any kind of object, and if there were
old user code that relied on this for some reason, it would be using
that runtime.

DiffTrain build for [0b3b8a6a35](https://github.com/facebook/react/commit/0b3b8a6a354b90fe76a9d82bb34487e5d2f71203)
This commit is contained in:
acdlite
2024-04-08 15:18:01 +00:00
parent c093e5beb3
commit aabb356a7e
11 changed files with 29 additions and 49 deletions
@@ -1410,11 +1410,8 @@ if (__DEV__) {
props = {};
for (var propName in config) {
if (
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
propName !== "key" &&
(enableRefAsProp || propName !== "ref")
) {
// Skip over reserved prop names
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
props.ref = coerceStringRef(
config[propName],
@@ -1412,11 +1412,8 @@ if (__DEV__) {
props = {};
for (var propName in config) {
if (
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
propName !== "key" &&
(enableRefAsProp || propName !== "ref")
) {
// Skip over reserved prop names
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
props.ref = coerceStringRef(
config[propName],
+1 -1
View File
@@ -1 +1 @@
2acfb7b60922bdc8376dd144ca7bc532df78254b
0b3b8a6a354b90fe76a9d82bb34487e5d2f71203
+3 -6
View File
@@ -24,7 +24,7 @@ if (__DEV__) {
) {
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
}
var ReactVersion = "19.0.0-www-classic-4511ca3e";
var ReactVersion = "19.0.0-www-classic-87084f69";
// ATTENTION
// When adding new symbols to this file,
@@ -1818,11 +1818,8 @@ if (__DEV__) {
props = {};
for (var propName in config) {
if (
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
propName !== "key" &&
(enableRefAsProp || propName !== "ref")
) {
// Skip over reserved prop names
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
props.ref = coerceStringRef(
config[propName],
+3 -6
View File
@@ -24,7 +24,7 @@ if (__DEV__) {
) {
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
}
var ReactVersion = "19.0.0-www-modern-8e3891bc";
var ReactVersion = "19.0.0-www-modern-7116ae62";
// ATTENTION
// When adding new symbols to this file,
@@ -1820,11 +1820,8 @@ if (__DEV__) {
props = {};
for (var propName in config) {
if (
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
propName !== "key" &&
(enableRefAsProp || propName !== "ref")
) {
// Skip over reserved prop names
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
props.ref = coerceStringRef(
config[propName],
+3 -4
View File
@@ -121,9 +121,8 @@ function jsxProd(type, config, maybeKey) {
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
maybeKey = {};
for (var propName in config)
hasOwnProperty.call(config, propName) &&
"key" !== propName &&
(enableRefAsProp || "ref" !== propName) &&
"key" === propName ||
(!enableRefAsProp && "ref" === propName) ||
(enableRefAsProp && "ref" === propName
? (maybeKey.ref = coerceStringRef(
config[propName],
@@ -704,4 +703,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "19.0.0-www-classic-36e8d411";
exports.version = "19.0.0-www-classic-544fd05e";
+3 -4
View File
@@ -121,9 +121,8 @@ function jsxProd(type, config, maybeKey) {
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
maybeKey = {};
for (var propName in config)
hasOwnProperty.call(config, propName) &&
"key" !== propName &&
(enableRefAsProp || "ref" !== propName) &&
"key" === propName ||
(!enableRefAsProp && "ref" === propName) ||
(enableRefAsProp && "ref" === propName
? (maybeKey.ref = coerceStringRef(
config[propName],
@@ -704,4 +703,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "19.0.0-www-modern-36e8d411";
exports.version = "19.0.0-www-modern-544fd05e";
@@ -125,9 +125,8 @@ function jsxProd(type, config, maybeKey) {
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
maybeKey = {};
for (var propName in config)
hasOwnProperty.call(config, propName) &&
"key" !== propName &&
(enableRefAsProp || "ref" !== propName) &&
"key" === propName ||
(!enableRefAsProp && "ref" === propName) ||
(enableRefAsProp && "ref" === propName
? (maybeKey.ref = coerceStringRef(
config[propName],
@@ -708,7 +707,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "19.0.0-www-classic-718fc0c7";
exports.version = "19.0.0-www-classic-c3069b6b";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -125,9 +125,8 @@ function jsxProd(type, config, maybeKey) {
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
maybeKey = {};
for (var propName in config)
hasOwnProperty.call(config, propName) &&
"key" !== propName &&
(enableRefAsProp || "ref" !== propName) &&
"key" === propName ||
(!enableRefAsProp && "ref" === propName) ||
(enableRefAsProp && "ref" === propName
? (maybeKey.ref = coerceStringRef(
config[propName],
@@ -708,7 +707,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "19.0.0-www-modern-718fc0c7";
exports.version = "19.0.0-www-modern-c3069b6b";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -1530,11 +1530,8 @@ if (__DEV__) {
props = {};
for (var propName in config) {
if (
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
propName !== "key" &&
(enableRefAsProp || propName !== "ref")
) {
// Skip over reserved prop names
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
props.ref = coerceStringRef(
config[propName],
@@ -3134,7 +3131,7 @@ if (__DEV__) {
function noop() {}
var ReactVersion = "19.0.0-www-modern-4e2ff20e";
var ReactVersion = "19.0.0-www-modern-c9d5711a";
// Patch fetch
var Children = {
@@ -82,9 +82,8 @@ function jsxProd(type, config, maybeKey) {
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
maybeKey = {};
for (var propName in config)
hasOwnProperty.call(config, propName) &&
"key" !== propName &&
(enableRefAsProp || "ref" !== propName) &&
"key" === propName ||
(!enableRefAsProp && "ref" === propName) ||
(enableRefAsProp && "ref" === propName
? (maybeKey.ref = coerceStringRef(
config[propName],
@@ -602,4 +601,4 @@ exports.useId = function () {
exports.useMemo = function (create, deps) {
return ReactCurrentDispatcher.current.useMemo(create, deps);
};
exports.version = "19.0.0-www-modern-ea5b7988";
exports.version = "19.0.0-www-modern-9b5f5653";