fix: jsx slot render unexpected #215 (#218)

* fix: jsx slot render unexpected #215

* test: update test
This commit is contained in:
zkwolf 2020-12-11 23:46:34 +08:00 committed by GitHub
parent 7efda55501
commit b0fb8c0db4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 1 deletions

View File

@ -122,7 +122,7 @@ const transformJSXElement = (
t.isCallExpression(child) && child.loc && isComponent
) { // the element was generated and doesn't have location information
const slotId = path.scope.generateUidIdentifier('slot');
const scope = path.hub.getScope();
const scope = path.scope;
if (scope) {
scope.push({
id: slotId,

View File

@ -570,4 +570,24 @@ describe('should support passing object slots via JSX children', () => {
expect(wrapper.html()).toBe('<span>foo<!----></span>');
});
test('single expression, array map expression', () => {
const Test = defineComponent({
setup(_, { slots }) {
return () => <span>{slots.default?.()}</span>;
},
});
const data = ['A', 'B', 'C'];
const wrapper = mount({
render() {
return (
<div>{data.map((item: string) => <Test><span>{item}</span></Test>)}</div>
);
},
});
expect(wrapper.html()).toBe('<div><span><span>A</span></span><span><span>B</span></span><span><span>C</span></span></div>');
});
});