optimisation.react.inlineElements: move children into props and leave children out if the element has none - @spicyj

This commit is contained in:
Sebastian McKenzie 2015-03-31 03:31:27 +11:00
parent 6bc2bfce7d
commit 1ef41b6f32
9 changed files with 30 additions and 29 deletions

View File

@ -36,15 +36,19 @@ export function JSXElement(node, parent, scope, file) {
}
function pushElemProp(key, value) {
obj.properties.push(t.property("init", t.identifier(key), value));
pushProp(obj.properties, t.identifier(key), value);
}
function pushProp(objProps, key, value) {
objProps.push(t.property("init", key, value));
}
// metadata
pushElemProp("type", type);
pushElemProp("ref", t.literal(null));
if (!open.selfClosing) {
pushElemProp("children", t.arrayExpression(react.buildChildren(node)));
if (node.children.length) {
pushProp(props.properties, t.identifier("children"), t.arrayExpression(react.buildChildren(node)));
}
// props
@ -53,7 +57,7 @@ export function JSXElement(node, parent, scope, file) {
if (isJSXAttributeOfName(attr, "key")) {
key = attr.value;
} else {
props.properties.push(t.property("init", attr.name, attr.value));
pushProp(props.properties, attr.name, attr.value);
}
}

View File

@ -15,8 +15,9 @@ function render() {
var _ref = {
type: "foo",
ref: null,
children: [text],
props: {},
props: {
children: [text]
},
key: null
};
return function () {

View File

@ -3,9 +3,8 @@
({
type: Baz,
ref: null,
children: [],
props: babelHelpers.defaultProps(Baz.defaultProps, {
foo: "bar"
}),
key: null
});
});

View File

@ -3,7 +3,6 @@
({
type: Baz,
ref: null,
children: [],
props: babelHelpers.defaultProps(Baz.defaultProps, {}),
key: null
});
});

View File

@ -3,9 +3,8 @@
({
type: "foo",
ref: null,
children: [],
props: {
bar: "foo"
},
key: null
});
});

View File

@ -3,7 +3,6 @@
({
type: "foo",
ref: null,
children: [],
props: {},
key: null
});
});

View File

@ -3,13 +3,13 @@
({
type: Foo,
ref: null,
children: [bar, {
type: Baz,
ref: null,
props: babelHelpers.defaultProps(Baz.defaultProps, {}),
key: "baz"
}],
props: babelHelpers.defaultProps(Foo.defaultProps, {
children: [bar, {
type: Baz,
ref: null,
props: babelHelpers.defaultProps(Baz.defaultProps, {}),
key: "baz"
}],
className: "foo"
}),
key: null

View File

@ -3,9 +3,9 @@
({
type: "div",
ref: null,
children: [bar],
props: {
children: [bar],
className: "foo"
},
key: null
});
});

View File

@ -3,14 +3,14 @@
({
type: "div",
ref: null,
children: [bar, {
type: Baz,
ref: null,
props: babelHelpers.defaultProps(Baz.defaultProps, {}),
key: "baz"
}],
props: {
children: [bar, {
type: Baz,
ref: null,
props: babelHelpers.defaultProps(Baz.defaultProps, {}),
key: "baz"
}],
className: "foo"
},
key: null
});
});