繁体   English   中英

React 应用程序在 15.6.2 上运行良好,在 16.0.0 上中断

[英]React app works fine with 15.6.2, breaks with 16.0.0

我正在升级到 React v16。 发布文件指出“除了少数例外,如果您的应用程序在 15.6 中运行而没有任何警告,它应该可以在 16 中运行。” 我的应用程序在 15.6.2 上运行良好(并且没有警告),但在 16.0.0 上根本没有运行,当它尝试运行包时抛出奇怪的错误: Uncaught TypeError: Cannot read property 'string' of undefined错误Uncaught TypeError: Cannot read property 'string' of undefined加载其中之一捆绑文件和Uncaught TypeError: Cannot read property 'string' of undefined"在加载另一个时Uncaught TypeError: Cannot read property 'string' of undefined"

我怀疑这段代码是不兼容的根源:

ReactDOM.render((
  <Router>
    <div>
      <Route component = { Header } />
      <Switch>
        <Route exact path = '/' component = { Home } />
        <Route exact path = '/index.html' component = { Home } />
        <Route path = "/browse" component = { Browse } />
        . . . . . . . etc. . . . . 
      </Switch>
      <Route component = { Footer } />
    </div>
  </Router>
), document.getElementById("main"))

我正在渲染这个,AFAIK,在任何生命周期方法之外,这段代码是我的 webpack 配置文件中应用程序的入口点。

如果有用的话,我很高兴添加更多的构建脚手架。 该应用程序在 15.6.2 下完美运行。

未捕获的类型错误:无法读取未定义的属性“字符串”

这看起来是由代码引起的

MyComponent.propTypes = {
  something: React.PropTypes.string
};

这是因为PropTypes已在 React 16 中移动到单独的包中:

MyComponent.propTypes = {
  something: PropTypes.string
};

此代码确实在 15发出警告,因此如果您没有看到警告,则您的设置可能有问题。 例如,也许您在开发中错误地使用了 React 的生产版本,因此没有看到警告。

看到你使用了 React Router,请确保将其更新到与 React 16 兼容的版本。最新的 3.x 和 4.x 版本都兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM