React 16 升级时遇到的一个坑,分享一下

#1

升级前的packjson中的版本为

"react": "15.4.2",
"react-dom": "15.4.2",
"react-router": "3.0.2",
"prop-types": "15.6.0"

然后我就先升级了

"react": "16.0.0",
"react-dom": "16.0.0"

然后运行原来的项目报错
报错信息如下:
Uncaught TypeError: Cannot read property ‘func’ of undefined

react-router v3.0.2报出来的错误~为什么会报错?

查看源码,在react-router的 ContextUtils.js 中,使用了
import { PropTypes } from 'react'
引用PropTypes。

在react v16.0.0 版本中,已经把PropTypes给移出核心包了(要使用的话,就要使用prop-types这个包啦~~~)

解决办法:
把react-router升级为3.0.4以上版本就好了~因为3.0.4已经把PropTypes的引用改为
import PropTypes from 'prop-types'

好了,问题解决!
最终packjson的版本为 (react-router v3的最新版本为3.2.0)

"react": "16.0.0",
"react-dom": "16.0.0",
"react-router": "3.2.0",
"prop-types": "15.6.0"
#2

换RR v4 吧 骚年

#4

项目已经投产了。v4版本有点破坏性-。- 换不起~~