我无法在除“/”之外的任何路线上渲染任何组件。 这是我的routes.js代码
import React from 'react'
import ReactDOM from 'react-dom';
import {
BrowserRouter as Router,
Route,
} from 'react-router-dom'
import StockTable from './containers/stockTableContainer';
import StockDetail from './containers/stockDetailContainer';
export const getRoutes = (store) => {
return(
<Router>
<div>
<Route exact path ='/' component ={StockTable}/>
<Route path ='/details' component ={StockDetail}/>
</div>
</Router>
)
}
我可以在“/”路线上渲染StockDetail组件,但我无法在“/ details”上路由它。
我也尝试使用但仍然无法呈现“/ details”
答案 0 :(得分:1)
您可以按照文档
中的指示将Switch
用于您的路线
<Switch>
<Route path='some_path' component={Some component} />
</Switch>
答案 1 :(得分:1)
如果您的应用程序托管在静态文件服务器上,则需要使用
<HashRouter>
而不是<BrowserRouter>
。
这是因为您的服务器不知道如何处理对/
以外的路径发出的请求。要使BrowserRouter
生效,任何可路由的请求都应该在index.html
。
加载托管在静态文件上的网站的根页面时 服务器(例如http://www.example.com),可能会出现
<BrowserHistory>
上班。但是,这只是因为当浏览器制作时 请求根页面,服务器以root用户响应 index.html文件。如果您通过根页面,应用内导航加载应用程序 将起作用,因为实际上没有向服务器发出请求。这个 表示如果您加载http://www.example.com并单击指向的链接 http://www.example.com/other-page/,您的应用程序将匹配并且 渲染/ other-page / route。
但是,如果要更新a,最终会出现空白屏幕 非根页面(或只是尝试直接导航到它)。开放 您的浏览器的开发人员工具,您将看到一个错误消息 控制台通知您无法加载页面。这是 因为静态文件服务器实际上依赖于所请求的文件 现有
进一步沿着
行当您的服务器可以响应动态请求时,这不是问题。在这种情况下,您可以指示服务器捕获所有请求并提供相同的index.html文件。