diff --git a/packages/nerv-server/__tests__/render.spec.js b/packages/nerv-server/__tests__/render.spec.js index 5212d0bd..15ccf346 100644 --- a/packages/nerv-server/__tests__/render.spec.js +++ b/packages/nerv-server/__tests__/render.spec.js @@ -1,5 +1,5 @@ /** @jsx createElement */ -import { Component, createElement } from 'nervjs' +import { Component, createElement, Fragment } from 'nervjs' import sinon from 'sinon' import { renderToString } from '../src' const render = renderToString @@ -92,6 +92,16 @@ describe('render', () => { `
` ) }) + + it('should render Fragment child elements', () => { + const rendered = render( + + {[1].map(() =>
Fragment
)} +
+ ) + const expected = `
Fragment
` + expect(rendered).toEqual(expected) + }) }) describe('Functional component', () => { diff --git a/packages/nerv-server/src/index.ts b/packages/nerv-server/src/index.ts index 1a6530db..a1b4046a 100644 --- a/packages/nerv-server/src/index.ts +++ b/packages/nerv-server/src/index.ts @@ -157,7 +157,14 @@ function renderVNodeToString (vnode, parent, context, isSvg?: boolean) { context = extend(clone(context), instance.getChildContext()) } return renderVNodeToString(rendered, vnode, context, isSvg) + } else if (Array.isArray(vnode)) { + let result = '' + vnode.forEach((vnodeItem) => { + result += renderVNodeToString(vnodeItem, {}, {}) + }) + return result } + return '' } export function renderToString (input: any): string {