前端項目升級到React-router5中遇到的問題解決方案以及思路

我胡漢三有又來這裏吹水了,最近一直再忙着將老項目升級,因此沒時間來搞文章,今天忽然感受開了掛同樣,愛因斯坦附體,把以前的bug都搞定了,在這裏特地把升級中遇到的問題記錄下來,算是把這個坑填上。



場景:react-router2.2.4 ---> 5.0.1react

主要發生了兩個問題:react-router

       1.路由跳轉以前用了browserHistory.push() dom

             拋錯:Cannot read property 'push' of  undefinedthis

       2.react-router中的Link組件 debug

             拋錯:type is invalid3d


問題一的解決與思考:router

  解決方案:使用this.props.history.push()cdn

  出現緣由:react-router5.0.1已經不存在browserHistory這個對象對象

  解決思路:1.當拋出錯誤後,打了debugger,blog

                          結果:發現browserHistory是undefined

       2.將 import {browserHistory} from 'react-router' 改成 

                           import * as Rtest from 'react-router',並在後面打印出Rtest,

                           結果:發現Rtest 中並無browserHistory對象

          在此已經懷疑是版本問題,由於給react-router升級到了5.0.1

       3.翻看以前的版本(2.2.4),發現存在browserHistory,

                          肯定問題:問題爲react-router版本升級致使以前的寫法出現錯誤


問題二的解決與思考

  解決方案:從react-router-dom中引入,inport {Link} from 'react-router-dom'

  出現緣由:Link組件被從react-router移動到了react-router-dom中

  解決思路:1.找到Link組件,發現Link組件的使用沒問題,看了拋錯

                          結果:Link組件不存在

       2.本想直接刪除掉Link組件,本身手動實現一個,後查了一下發現Link組件

                          被移入了react-router-dom中。


總結:react-router後來的版本和以前的版本區別仍是蠻大的,升級的話,基本上大部分地方都須要動一動,可是改起來仍是很便捷的。

好了,今天就記錄到這。我胡漢三看文檔去了,告辭!

相關文章
相關標籤/搜索