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

标签 javascript reactjs webpack babeljs

我正在升级到 React v16。发布文档指出“除了少数异常(exception),如果您的应用程序在 15.6 中运行且没有任何警告,则它应该可以在 16 中运行。”我的应用程序在 15.6.2 上运行良好(并且没有警告),但在 16.0.0 上根本不运行,在尝试运行 bundle 时抛出奇怪的错误: 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"))

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

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

最佳答案

Uncaught TypeError: Cannot read property 'string' of undefined

这看起来是由如下代码引起的

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

这是因为 PropTypes 在 React 16 中被移到了一个单独的包中:

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

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

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

关于javascript - React 应用程序在 15.6.2 上运行良好,在 16.0.0 上中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702603/

相关文章:

webpack - 如何使用新的 Webpack API 重写 compiler.plugin ('done' ...)?

JavaScript - Uncaught ReferenceError : dis1 is not defined VM535:1 (anonymous function)

javascript - 动态更改基于图像的 css 类内容

javascript - 单击时显示 div

javascript - 有没有办法让表格单元格固定在给定高度并启用自动换行?

javascript - React-Redux CSS 转换

sql - node.js 登录无法使用 azure sql 数据库

javascript - 在 Vue Webpack 中禁用转译器以更轻松地调试

javascript - webpack-dev-server 不使用 react-router 参数路由从配置位置提供包

c# - 从 asp.net c# 设置 style.display