在React-router 中處理URL
URL 在刷新或手動輸入時不起作用
使用React-Router 時,有一個區別伺服器端和客戶端路由之間。通常,您的應用程式會先向伺服器發送初始請求,以取得包含 React 腳本的靜態 HTML 檔案。載入後,客戶端將處理後續的 URL 更改,而無需發出新的伺服器請求。
問題:當您刷新或手動輸入與伺服器端路由一致的 URL 時(例如,/joblist)在客戶端路由模式下,它不會呈現預期的視圖。相反,您可能會遇到“無法取得/作業清單”錯誤。
伺服器端與客戶端路由
伺服器端:伺服器處理所有 URL路由。在靜態 HTML 網站中,伺服器會傳送特定 URL 的 HTML 頁面,例如 /joblist。
客戶端路由: React-Router 在客戶端處理 URL 路由。它不是從伺服器請求新頁面,而是根據 URL 變更動態更新顯示的內容。
解決問題
要解決此問題,您需要在兩台伺服器上建立路由和客戶端。以下是可能的方法:
雜湊歷史記錄(瀏覽器歷史記錄的前身)
此方法使用帶有雜湊(#) 前綴的URL,例如/joblist#/about 。哈希之後的部分不會發送到伺服器,因此伺服器始終看到根 URL (/)。客戶端,React-Router 處理 #/about 部分。
缺點:
- 不吸引人的 URL
- 沒有伺服器端渲染, 產生負面影響SEO。
Catch-All
在伺服器上設定一個包羅萬象的路由。例如,如果伺服器收到任何與特定路由不符的 URL,它將發送 index.html 檔案。這可以確保無論輸入什麼 URL,React 應用程式都會載入。
缺點:
- 更複雜的設定
- SEO次優,因為所有頁面都傳回相同的content.
混合
這種方法將重要頁面的包羅萬象與特定的伺服器端路由結合。您可以為這些頁面提供靜態 HTML 文件,使其內容可供搜尋引擎使用。
缺點:
- 設定更複雜
- 有限的SEO 優點
- 程式碼重複(在客戶端和客戶端和客戶端端上呈現內容)
同構
在這種方法中,伺服器和客戶端都執行相同的 JavaScript 程式碼。這透過向客戶端發送相同的標記來解決問題,無論頁面轉換發生在伺服器端還是客戶端。
缺點:
- 伺服器必須執行JavaScript(通常是Node.js)
- 環境挑戰
- 陡峭的學習曲線
選擇正確的解決方案
考慮以下因素因素:
- 簡單性: Catch-all 是相對簡單的設定。
- SEO: 同構是 SEO 的最佳解決方案,但這需要更多的努力。
- 伺服器技術:如果您的伺服器運行在 Node.js 上,那麼同構是一個合適的選擇。
最終,最適合您的選擇取決於您的特定要求和技術能力。
以上是為什麼我的 React Router 在頁面刷新或手動 URL 輸入後不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!