BrowserRouter如何配合react-router伺服器
這篇文章主要介紹了詳解react-router 4.0 下伺服器如何配合BrowserRouter,現在分享給大家,也給大家做個參考。
react-router作為react框架路由解決方案在react專案中舉足輕重。
在react-router 4.0版本中,API與先前版本相比有了很大的修改,在2.0、3.0中常用的
其中
而
前者:http://127.0.0.1:3000/article/num1
後者:http://127.0.0.1:3000/#/article/num1(不一定是這樣,但#是少不了的)
這樣的區別帶來的直接問題就是當處於二級或多級路由狀態時,刷新頁面,
我們當然不希望前端路由被傳送到後台。
在react-router 4.0 的文檔中有這樣一段話:
注意: 使用 hash 的方式記錄導航歷史不支援 location.key 和 location.state。在先前的版本中,我們為這種行為提供了 shim,但仍有一些問題我們無法解決。任何依賴此行為的程式碼或外掛程式都將無法正常使用。由於該技術僅用於支援傳統的瀏覽器,因此在用於瀏覽器時可以使用
這就要求伺服器要配合前端做一些簡單的修改。
修改的想法就是當收到請求的url不是功能性的,而是前端路由時,重新載入入口html檔案(我的後台是nodejs)。
// catch 404 and forward to error handler app.use(function(req, res, next) { //判断是主动导向404页面,还是传来的前端路由。 //如果是前端路由则如下处理 fs.readFile(__dirname + '/public/dist/index.html', function(err, data){ if(err){ console.log(err); res.send('后台错误'); } else { res.writeHead(200, { 'Content-type': 'text/html', 'Connection':'keep-alive' }); res.end(data); } }) });
此處踩坑無數,在網路搜尋方法後換用nginx,使用try_files欄位定向到入口html,但是重定向後,webpack打包的js檔案沒有執行。
在查看firebug時發現此次刷新的回應頭中設定了"Connection":"keep-alive";
覺得問題應該出在這裡,換用nodejs用200狀態配合keep-alive果然解決了問題。
在react-router 4.0 多層級路由下重新整理頁面不會再404,而是儲存了前端狀態。
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
#以上是BrowserRouter如何配合react-router伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

深入探討console.log輸出差異的根源本文將分析一段代碼中console.log函數輸出結果的差異,並解釋其背後的原因。 �...
