2017-01-03 40 views
0

我試圖模仿反應路由器示例部分中指定的結構,尤其是具有「巨大應用程序」的結構。我的文件夾結構如下所示。在響應路由器示例部分中的路由如何工作?

project 
--src 
    --huge-apps 
    --app.js 
    --index.html 
--index.html 
--webpack.config.js 

這變化只從結構中的一個級別內做出反應路由器實例部分,主要內容如下:

examples 
--huge-apps 
    --app.js 
    --index.html 
--index.html 
--webpack.config.js 

我的問題是,我必須指定我的根路徑爲「/ src目錄/巨大的應用程序「內我的路由器配置app.js巨大的應用程序文件夾下。但是,在巨大應用程序部分下,反應路由器示例部分的app.js文件中僅將根路徑指定爲「/」。

有人可以幫助我理解如何實現類似的設置,我的「巨大應用程序」部分下的根路徑也可以指定爲「/」?

我似乎無法弄清楚我在這裏錯過了什麼。我的反應路由器版本2.0.0-rc5

謝謝

回答

0

這些示例使用基準名稱。使用基本名稱(對於瀏覽器歷史記錄項目,它們對於散列歷史記錄來說是完全不必要的)來指定根目錄以在其中查找項目。所有路徑名將被視爲以基名開頭。

您可以通過decorating your history將基準名添加到您的項目中。例如,如果你的URL應以/huge-apps開始:

import { useRouterHistory } from 'react-router' 
import { createHistory } from 'history' 

const history = useRouterHistory(createHistory)({ 
    basename: '/huge-apps' 
}) 

現在,當你瀏覽到/huge-apps,你的應用程序中,會考慮的位置是/。同樣,在您的應用程序中,URL /huge-apps/foobar將被視爲/foobar

您當然需要進行服務器設置,以便當用戶請求任何/huge-apps/* URL時,它將爲您的index.html文件提供服務。另外,您應該將您的React Router版本升級到2.8.1或3.0.0。版本3與2相同,但刪除了任何已棄用的版本1代碼。

+0

這確實解決了我的問題。我指的是標籤下的示例部分(v2.0.0-rc5),它沒有代碼中指定的基本名稱支持。我很高興它現在有效。我也升級到3.0.0,似乎一切正常。謝謝@保羅S – coderC