Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我的react路由器在某些路由上不工作_Reactjs - Fatal编程技术网

Reactjs 我的react路由器在某些路由上不工作

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'

我正在学习如何反应。在我的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';

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一起使用。但是,我建议添加一个父路由