Prevent object shape change in jsx helper (#7170)
Keeping the shape of an object constant is a performance improvement for modern javascript engines. At the point of the code change it is certain that the `children` property will be set later, so the property can already be set to `undefined`.
This commit is contained in:
parent
0a517b51cd
commit
3c8d831fe4
@ -39,7 +39,9 @@ helpers.jsx = defineHelper(`
|
|||||||
if (!props && childrenLength !== 0) {
|
if (!props && childrenLength !== 0) {
|
||||||
// If we're going to assign props.children, we create a new object now
|
// If we're going to assign props.children, we create a new object now
|
||||||
// to avoid mutating defaultProps.
|
// to avoid mutating defaultProps.
|
||||||
props = {};
|
props = {
|
||||||
|
children: void 0,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
if (props && defaultProps) {
|
if (props && defaultProps) {
|
||||||
for (var propName in defaultProps) {
|
for (var propName in defaultProps) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
var REACT_ELEMENT_TYPE;
|
var REACT_ELEMENT_TYPE;
|
||||||
|
|
||||||
function _jsx(type, props, key, children) { if (!REACT_ELEMENT_TYPE) { REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; } var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = new Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }
|
function _jsx(type, props, key, children) { if (!REACT_ELEMENT_TYPE) { REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; } var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = { children: void 0 }; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = new Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }
|
||||||
|
|
||||||
var _ref = _jsx("foo", {});
|
var _ref = _jsx("foo", {});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user