Material UI 与 React 16 的兼容性为 0.2 倍

问题描述 投票:0回答:2

尝试从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

自从我发现了有关material-ui与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

reactjs express material-ui
2个回答
3
投票

我们使用

material-ui 0.18.1
React 16.3
进行客户端渲染,一切运行良好。我不认为这个错误是因为
material-ui 0.2x
React 16.x
之间不兼容。

对于服务器端渲染,我找到了 this repo,它使用

material-ui 0.x
在服务器端渲染
React 16.x
。所以这绝对是不是兼容性问题


1
投票

我最近的任务是支持 MUI 0.x 和 MUI 1.x,尽管这很具有挑战性,但我找到了一种让它发挥作用的方法。

对于 MUI 0.x,我发现可以很好地协同工作的版本是:

  • [email protected]
  • [email protected]
    - 升级到
    [email protected]
    会破坏它,这与小更新中事件的处理方式有关。

需要一些其他配置才能使 MUI 1.x 与 MUI 0.x 一起工作,但希望这部分足以回答您的问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.