使用react router和express进行页面刷新时的预期行为?

时间:2016-05-21 02:04:48

标签: express reactjs react-router

我希望这是一个简单的问题。我有一个快速服务器,有一条路线。



var express = require('express');
var app = express();
var path = require('path');

app.get('/', function (req, res) {
  res.sendFile(path.join(__dirname + '/src/index.html'));
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});




index.html链接到以下js:



import React                                   from 'react';
import ReactDOM                                from 'react-dom';
import { Router, Route, Link, browserHistory } from 'react-router';
import Redux                                   from 'redux';

var App = React.createClass({
  render: () => {
    return(
      <div>React!
        <Link to={`/page2`}>Page 2</Link>
      </div>
    );
  }
});

var AnotherView = React.createClass({
  render: () => {
    return(
      <div>Page 2
      <Link to={`/`}>App</Link></div>
    );
  }
});

ReactDOM.render(
  <Router history={browserHistory}>
    <Route path="/" component={App}></Route>
    <Route path="/page2" component={AnotherView}/>
  </Router>,
  document.getElementById('app')
);
&#13;
&#13;
&#13;

当我转到localhost:3000并从那里开始时,我可以点击链接并更改网址。问题是,如果我在使用路由器时访问localhost:3000 / page2会发生什么?是否应该弄清楚它应该显示AnotherView组件并显示它?我得到&#34;不能GET / page2&#34;来自快递。如果要做到这一点我需要做什么?

1 个答案:

答案 0 :(得分:1)

app.get('*', function (req, res) {
  res.sendFile(path.join(__dirname + '/src/index.html'));
});

服务器应该处理所有请求,而不仅仅是'/'