5

React 15.4 から React 16.4.1 (react-dom も 16.4.1 にアップグレード) にアップグレードしようとした後、ルーターから次のエラー メッセージが表示されます。

TypeError: _nextProps.children is not a function
    at ReactDOMServerRenderer.render (/var/www/web/node_modules/react-dom/cjs/react-dom-server.node.development.js:2491:55)
    at ReactDOMServerRenderer.read (/var/www/web/node_modules/react-dom/cjs/react-dom-server.node.development.js:2354:19)
    at renderToString (/var/www/web/node_modules/react-dom/cjs/react-dom-server.node.development.js:2726:25)
    at render (/var/www/web/server/routes/others.jsx:141:24)
    at process._tickCallback (internal/process/next_tick.js:68:7)

コード:

const render = () => {
  const body = renderToString(
    <MuiThemeProvider muiTheme={muiTheme}>
      <ThemeProvider theme={theme}>
        <Provider store={store}>
          <IntlProvider>
            <RouterContext {...renderProps} />
          </IntlProvider>
        </Provider>
      </ThemeProvider>
    </MuiThemeProvider>
);

renderここで定義されていますが、後で同じルーティング ファイルに返されます。

Promise.all(prefetchData(renderProps, store))
  .then(render)
  .catch(prefetchError => next(prefetchError));

React 15.x から React 16.x にアップグレードするために、推奨される手順に従いました。

React 16 との material-ui の互換性に関する関連する問題を見つけたので:

https://github.com/mui-org/material-ui/issues/8434

https://github.com/mui-org/material-ui/issues/7795

このエラー メッセージは、material-ui 0.2x と React 16.x の間の非互換性が原因で発生するのではないかと考えていました。つまり、次のことを行うために material-ui 1.x にアップグレードする必要があるかどうかを知りたいのです。 React 16.x を使用できる

4

2 に答える 2