Есть ли способ программно переключиться на hashHistory из browserHistory на сервере разработки webpack?

Есть ли способ автоматически переключаться на hashHistory из browserHistory в React Router при использовании сервера webpack-dev? Я часто получаю сообщение об ошибке «Невозможно получить/имя_маршрута», если страница обновляется. Я могу обойти эту проблему, вручную переключившись на hashHistory, но мне интересно, есть ли хороший способ автоматически переключать это туда и обратно в зависимости от того, нахожусь ли я в разработке или в производстве.

мой webpack.prod.config.js

const config = require('./webpack.config.js');
const webpack = require('webpack');

config.plugins.push(
  new webpack.DefinePlugin({
    "process.env": {
      "NODE_ENV": JSON.stringify("production")
    }
  })
);

config.plugins.push(
  new webpack.optimize.UglifyJsPlugin({
    compress: {
      warnings: false
    }
  })
);

module.exports = config;

Мой роутер

render((
  <Router history={browserHistory}>
    {/** ###### HOME ROUTE ###### */}
    <Route path="/" component={Home} />
    <Route path="/company" component={Company} />
    <Route path="/help" component={Help} />
    <Route path="/features" component={Features} />
    <Route path="/signup" component={SignUp} />
    <Route path="/work" component={Work} />
    {/** ###### END HOME ROUTES ###### */}
  </Router>
), document.getElementById('root'));

person ceckenrode    schedule 03.05.2016    source источник


Ответы (1)


Вы можете проверить свою переменную NODE_ENV, прежде чем устанавливать свою историю, что-то вроде этого

import { Router, Route, browserHistory,hashHistory IndexRoute } from 'react-router'

let history = process.env.NODE_ENV === "production" ? browserHistory : hashHistory;


render((
  <Router history={history}>
    {/** ###### HOME ROUTE ###### */}
    <Route path="/" component={Home} />
    <Route path="/company" component={Company} />
    <Route path="/help" component={Help} />
    <Route path="/features" component={Features} />
    <Route path="/signup" component={SignUp} />
    <Route path="/work" component={Work} />
    {/** ###### END HOME ROUTES ###### */}
  </Router>
), document.getElementById('root'));
person QoP    schedule 03.05.2016