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 {