Материал UI 0.2x совместимость с React 16 - PullRequest
0 голосов
/ 02 июля 2018

После попытки обновления с React 15.4 до React 16.4.1 (также обновил реагировать на 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:

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

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Недавно мне было поручено поддерживать MUI 0.x и MUI 1.x, и, хотя это было непросто, я нашел способ заставить его работать.

С MUI 0.x я обнаружил, что версии, которые хорошо работали вместе, были:

  • material-ui@0.19.4
  • react@16.3.2 - обновление до react@16.4 сломает его, что связано с обработкой событий в этом незначительном обновлении.

Для работы MUI 1.x в сочетании с MUI 0.x была необходима другая конфигурация, но, надеюсь, этой части достаточно, чтобы ответить на ваш вопрос.

0 голосов
/ 05 июля 2018

Мы используем material-ui 0.18.1 с React 16.3 для рендеринга на стороне клиента, и все работает хорошо. Я не думаю, что эта ошибка из-за несовместимости между material-ui 0.2x и React 16.x.

Для рендеринга на стороне сервера я нашел этого репо , который рендерит material-ui 0.x на стороне сервера с React 16.x. Так что это определенно не проблема совместимости .

...