Reactjs 从hashLocation更改为browserLocation后反应路由器断开

Reactjs 从hashLocation更改为browserLocation后反应路由器断开,reactjs,react-router,Reactjs,React Router,我不明白为什么在使用browserLocation从hashLocation更改为now之后,我可以单击下面的链接导航到(呈现面试)面试,但现在由于某种原因,我在面试时(我被重定向到呈现面试的面试组件),如果我刷新浏览器,并在我已经在同一个页面上时再次尝试点击采访/companys/:companyId,它会点击express.js实现中找不到的页面 因此,再次总结这一点:第一次,当我单击主登录页上的链接时,所在的位置。当我第一次加载网站时,当我单击该链接时…它能够点击面试/公司/:公司ID并呈

我不明白为什么在使用browserLocation从hashLocation更改为now之后,我可以单击下面的链接导航到(呈现面试)面试,但现在由于某种原因,我在面试时(我被重定向到呈现面试的面试组件),如果我刷新浏览器,并在我已经在同一个页面上时再次尝试点击
采访/companys/:companyId
,它会点击express.js实现中找不到的页面

因此,再次总结这一点:第一次,当我单击主登录页上的链接时,
所在的位置。当我第一次加载网站时,当我单击该链接时…它能够点击面试/公司/:公司ID并呈现面试组件。一切都很好,直到你尝试点击刷新后,它爆炸了。不知道为什么

server.js

'use strict';

var express = require('express'),
    app = module.exports = express(),
    port = process.env.PORT || 3000,
    path = require('path');

app.use(express.static('client'));

app.use(function (req, res) {
    res.send('Sorry, Page Not Found');
});


console.log("port we're about to run on: " + port);

app.listen(port, function () {
    console.log('Ready on port %d', port);
}).on('error', function (err) {
    console.log(err);
});
在我的主登录页上,我单击一个链接,该链接在我的一个React组件中定义如下:

 <Link to={`/interviews/companies/${company.id}`}
      params={{id: company.id}}
      className="ft-company"
      ref="link">
    {company.name}
</Link>

{公司名称}
一开始效果不错。例如,我被发送到/journals/companys/6,这使得我的面试部分非常好

以下是我的路线定义:

const App = Component({
    render() {
        return (
            <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}>
                <Route path="/">
                    <IndexRoute component={HomePage}/>
                    <Route name="interview" path="interviews/companies/:companyId" component={Interview}/>
                </Route>
                <Route path="/" component={Container}></Route>
            </Router>
        );
    }
})
var history = require('connect-history-api-fallback');
var connect = require('connect');

var app = connect()
  .use(history())
  .listen(3000);
var express = require('express');

var app = express();
app.use(history());
const-App=组件({
render(){
返回(
window.scrollTo(0,0)}>
);
}
})

您需要在Web服务器中添加条目,为每个get html请求提供index.html服务

导入库:

const App = Component({
    render() {
        return (
            <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}>
                <Route path="/">
                    <IndexRoute component={HomePage}/>
                    <Route name="interview" path="interviews/companies/:companyId" component={Interview}/>
                </Route>
                <Route path="/" component={Container}></Route>
            </Router>
        );
    }
})
var history = require('connect-history-api-fallback');
var connect = require('connect');

var app = connect()
  .use(history())
  .listen(3000);
var express = require('express');

var app = express();
app.use(history());
现在您只需将中间件添加到应用程序中,如下所示:

const App = Component({
    render() {
        return (
            <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}>
                <Route path="/">
                    <IndexRoute component={HomePage}/>
                    <Route name="interview" path="interviews/companies/:companyId" component={Interview}/>
                </Route>
                <Route path="/" component={Container}></Route>
            </Router>
        );
    }
})
var history = require('connect-history-api-fallback');
var connect = require('connect');

var app = connect()
  .use(history())
  .listen(3000);
var express = require('express');

var app = express();
app.use(history());
当然,您也可以将此中间件与express配合使用:

const App = Component({
    render() {
        return (
            <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}>
                <Route path="/">
                    <IndexRoute component={HomePage}/>
                    <Route name="interview" path="interviews/companies/:companyId" component={Interview}/>
                </Route>
                <Route path="/" component={Container}></Route>
            </Router>
        );
    }
})
var history = require('connect-history-api-fallback');
var connect = require('connect');

var app = connect()
  .use(history())
  .listen(3000);
var express = require('express');

var app = express();
app.use(history());

现在唯一的问题是,当我刷新页面时,页面会刷新,但我的图像会中断。您应该从静态目录提供图像,尝试在静态目录之后移动此中间件。移动哪个中间件是什么意思?我的图像在客户端文件夹中…抱歉,图像应该可以正常工作此连接api回退仅修改不是图像或资源的请求。您的资源应该可以正常工作。请查看网络故障代码和问题。该插件工作正常,是一种标准方法