Refactor DOM special cases per tags including controlled fields (#26501)

I use a shared helper when setting properties into a helper whether it's
initial or update.

I moved the special cases per tag to commit phase so we can check it
only once. This also effectively inlines getHostProps which can be done
in a single check per prop key.

The diffProperties operation is simplified to mostly just generating a
plain diff of all properties, generating an update payload. This might
generate a few more entries that are now ignored in the commit phase.
that previously would've been ignored earlier. We could skip this and
just do the whole diff in the commit phase by always scheduling a commit
phase update.

I tested the attribute table (one change documented below) and a few
select DOM fixtures.

DiffTrain build for commit https://github.com/facebook/react/commit/85de6fde515148babd36eae2b7384ad8e62b732a.
This commit is contained in:
sebmarkbage
2023-03-29 02:44:53 +00:00
parent ca47a79880
commit 06aaaff227
13 changed files with 19 additions and 19 deletions
@@ -23762,7 +23762,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-next-5cbe6258b-20230328";
var ReactVersion = "18.3.0-next-85de6fde5-20230328";
// Might add PROFILE later.
@@ -8640,7 +8640,7 @@ var devToolsConfig$jscomp$inline_1007 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-next-5cbe6258b-20230328",
version: "18.3.0-next-85de6fde5-20230328",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1198 = {
@@ -8671,7 +8671,7 @@ var internals$jscomp$inline_1198 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-5cbe6258b-20230328"
reconcilerVersion: "18.3.0-next-85de6fde5-20230328"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1199 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -9065,7 +9065,7 @@ var devToolsConfig$jscomp$inline_1050 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-next-5cbe6258b-20230328",
version: "18.3.0-next-85de6fde5-20230328",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1239 = {
@@ -9096,7 +9096,7 @@ var internals$jscomp$inline_1239 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-5cbe6258b-20230328"
reconcilerVersion: "18.3.0-next-85de6fde5-20230328"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1240 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -27,7 +27,7 @@ if (
}
"use strict";
var ReactVersion = "18.3.0-next-5cbe6258b-20230328";
var ReactVersion = "18.3.0-next-85de6fde5-20230328";
// ATTENTION
// When adding new symbols to this file,
@@ -639,4 +639,4 @@ exports.useSyncExternalStore = function (
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-next-5cbe6258b-20230328";
exports.version = "18.3.0-next-85de6fde5-20230328";
@@ -642,7 +642,7 @@ exports.useSyncExternalStore = function (
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-next-5cbe6258b-20230328";
exports.version = "18.3.0-next-85de6fde5-20230328";
/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
@@ -1 +1 @@
5cbe6258bc436b1683080a6d978c27849f1d9a22
85de6fde515148babd36eae2b7384ad8e62b732a
@@ -27028,7 +27028,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-next-5cbe6258b-20230328";
var ReactVersion = "18.3.0-next-85de6fde5-20230328";
function createPortal$1(
children,
@@ -9507,7 +9507,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1027 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "18.3.0-next-5cbe6258b-20230328",
version: "18.3.0-next-85de6fde5-20230328",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -9549,7 +9549,7 @@ var internals$jscomp$inline_1273 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-5cbe6258b-20230328"
reconcilerVersion: "18.3.0-next-85de6fde5-20230328"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1274 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -10215,7 +10215,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1106 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "18.3.0-next-5cbe6258b-20230328",
version: "18.3.0-next-85de6fde5-20230328",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -10270,7 +10270,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-5cbe6258b-20230328"
reconcilerVersion: "18.3.0-next-85de6fde5-20230328"
});
exports.createPortal = function (children, containerTag) {
return createPortal$1(
@@ -27568,7 +27568,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-next-5cbe6258b-20230328";
var ReactVersion = "18.3.0-next-85de6fde5-20230328";
function createPortal$1(
children,
@@ -9763,7 +9763,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1086 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "18.3.0-next-5cbe6258b-20230328",
version: "18.3.0-next-85de6fde5-20230328",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -9805,7 +9805,7 @@ var internals$jscomp$inline_1339 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-5cbe6258b-20230328"
reconcilerVersion: "18.3.0-next-85de6fde5-20230328"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1340 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -10471,7 +10471,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1165 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "18.3.0-next-5cbe6258b-20230328",
version: "18.3.0-next-85de6fde5-20230328",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -10526,7 +10526,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-5cbe6258b-20230328"
reconcilerVersion: "18.3.0-next-85de6fde5-20230328"
});
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {
computeComponentStackForErrorReporting: function (reactTag) {