React 16 已經發布很久了,但是維護的一個很簡單的專案使用的還是 React 15.6。
由於想使用React 16.2 中的 Fragment 的特性,便決定升級。
升級過程
專案依賴並不多,所以直接升級:
需要同時升級 react 和 react-dom 這兩個包
npm install --save react@16.2.0 react-dom@16.2.0
複製程式碼
由於本來專案中使用的就是 React 4, 所以沒有升級 react-router-dom 這個包。
升級第三方依賴
檢查安裝的第三方抵賴包是否報錯,如果有報錯,嘗試升級。 由於本專案比較簡單,升級後編譯沒有報錯,暫時沒有升級第三方依賴包。
升級遇到的問題
報錯1: Cannot read property 'array' of undefined
static propTypes = {
images: PropTypes.array.isRequired,
}
複製程式碼
報這個錯的原因是 React 中元件 PropTypes 的引入有問題:
在react v16.0.0 版本中,已經把PropTypes給移出核心包了(要使用的話,就要使用prop-types這個包)
升級之前引入:
import React, { Component, PropTypes } from 'react'
複製程式碼
升級後修改為:
import PropTypes from 'prop-types'
複製程式碼
修改後就可以解決這個報錯。