これがReact Router v4、React Apolloクライアントまたは自分の実装に問題があるかどうかは不明です。Apollo + React Router 4 SSRの問題
しかし、トップレベルのHOCとして<ApolloProvider>
、すなわち持つ:
const ComponentsWithData = await getDataFromTree(
<ApolloProvider client={apolloClient}>
<StaticRouter location={ctx.request.url} context={route}>
<App />
</StaticRouter>,
</ApolloProvider>,
);
const html = ReactDOMServer.renderToString(ComponentsWithData);
...私が取得:
警告:失敗プロップタイプ:
ApolloProvider
に供給されるタイプarray
の無効な小道具children
を1つのReactElementが必要です。 in ApolloProvider Error React.Children.onlyが1つのReact要素の子を受け取ると予想されています。
そして周りに反転し、ルータの<StaticRouter>
トップとして、すなわち反応して:
const ComponentsWithData = await getDataFromTree(
<ApolloProvider client={apolloClient}>
<StaticRouter location={ctx.request.url} context={route}>
<App />
</StaticRouter>,
</ApolloProvider>,
);
...私はその後、取得:
を有することができます
<Router>
は一つだけ子要素
ブラウザでレンダリングが正常に動作します(リアクタの<BrowserRouter>
)、サーバー上では失敗します。
React Router v3では、React階層のの外側にあると一致するすべてのルートを実行し、その内部には宣言的には動作しないため、正常に動作します。