Reactjs 我的react路由器在某些路由上不工作
我正在学习如何反应。在我的index.js文件中,我有以下代码:Reactjs 我的react路由器在某些路由上不工作,reactjs,Reactjs,我正在学习如何反应。在我的index.js文件中,我有以下代码: import React from 'react'; import ReactDOM from 'react-dom'; import App from './components/App.jsx'; import Users from './components/Users.jsx'; import { Router, Route, IndexRoute, browserHistory } from 'react-router'
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App.jsx';
import Users from './components/Users.jsx';
import { Router, Route, IndexRoute, browserHistory } from 'react-router';
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App} />
<Route path="/users" component={Users} />
</Router>
), document.getElementById('root')
);
从“React”导入React;
从“react dom”导入react dom;
从“./components/App.jsx”导入应用程序;
从“./components/Users.jsx”导入用户;
从“react Router”导入{Router,Route,IndexRoute,browserHistory};
ReactDOM.render((
),document.getElementById('root'))
);
第一条路线是
<Route path="/" component={App} />
行,但是第二条路
<Route path="/users" component={Users} />
不起作用。我得到了“无法获取/用户”的错误。问题似乎是路由没有在服务器端处理 您可以在服务器上执行以下操作:
app.get('*', function (request, response){
response.sendFile(path.resolve(__dirname, 'public', 'index.html'))
})
我建议您使用一个父布局组件,然后将布线作为该父组件的子布线 假设您的父组件是
export default class Layout extends React.Component {
render() {
return (
<div>{this.props.children}</div>
)
}
}
导出默认类布局扩展React.Component{
render(){
返回(
{this.props.children}
)
}
}
现在你可以有你的路线像
import Users from './components/Users.jsx';
import Layout from './components/Layout.jsx';
import { Router, Route, IndexRoute, browserHistory } from 'react-router';
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={Layout} >
<IndexRoute component={App}/>
<Route path="/users" component={Users} />
</Router>
), document.getElementById('root')
);
从“./components/Users.jsx”导入用户;
从“./components/Layout.jsx”导入布局;
从“react Router”导入{Router,Route,IndexRoute,browserHistory};
ReactDOM.render((
),document.getElementById('root'))
);
另外,由于您使用的是browserHistory
,如果您试图使用url直接访问它,则会出现错误
为了在您的网页中解决此问题,请添加
historyApiFallback:true
谢谢。是的,我需要在启动服务器时添加historyApiFallback,就像react router的指令一样:是的,您需要它,您需要它与browserHistory一起使用,但不需要与hashHistory一起使用。但是,我建议添加一个父路由