javascript - 路由与react-router(-redux)不匹配

标签 javascript reactjs react-router redux react-router-redux

我一直在使用react、redux、react-router 和react-redux-router 绑定(bind)创建单页面应用程序。

路由 http://localhost:3001/register 与路由器根本不匹配,并且 Cannot GET/register 返回到浏览器,因为服务器显然不这样做不知道路线。我对 React-Redux 堆栈比较陌生,可能缺少一些非常基本的东西。

编辑:IndexRoute 正在工作,并且正在应用程序组件内显示主页组件。

Edit2:我没有使用服务器端渲染,而是使用 webpack-dev-server 进行开发。

但以下是迄今为止的相关代码片段:

entry.js

const store = createStore( 
    reducer, //from reducers.js
    applyMiddleware(routerMiddleware(browserHistory))
);

const history = syncHistoryWithStore(browserHistory, store);

render(
    <Provider store={store}>
        <Router history={history} routes={routes} />  //routes from routes.js
    </Provider>,
    document.getElementById('app')
 );

reducer .js

const rootReducer = combineReducers({
    RegisterForm,
    routing: routerReducer //provided by react-router-redux
});

export default rootReducer;

routes.js

const routes = (
    <Route path='/' component={App}>
        <IndexRoute component={Home} />
        <Route name='register' path='register' component={RegisterForm} />
    </Route>
);

export default routes;

Navigation.jsx(在 App.jsx 内渲染)

import React from 'react';
import {Link} from 'react-router';

export default class Navigation extends React.Component {
  render() {
    return (
      <div className="mdl-layout mdl-js-layout mdl-layout--fixed-header">

        <header className="mdl-layout__header">
          <div className="mdl-layout__header-row">
            <span className="mdl-layout-title">there!</span>
            <div className="mdl-layout-spacer"></div>
            <nav className="mdl-navigation mdl-layout--large-screen-only">
              <Link className="mdl-navigation__link" to="/">Home</Link>
              <Link className="mdl-navigation__link" to="register">Register</Link>
            </nav>
          </div>
        </header>

        <div className="mdl-layout__drawer">
          <span className="mdl-layout-title">there!</span>
          <nav className="mdl-navigation">
            <Link className="mdl-navigation__link" to="/">Home</Link>
            <Link className="mdl-navigation__link" to="register">Register</Link>
          </nav>
        </div>

        <main className="mdl-layout__content">
          <div className="page-content">
            {this.props.children}
          </div>
        </main>

      </div>
    );
  }
}

也许对某人来说这是显而易见的,我在这里缺少什么。如果您需要更多代码,请告诉我。

最佳答案

正如您所说,问题是您的后端不知道如何处理对 /register 的请求。解决方案是告诉您的后端针对此类请求返回 react 应用程序(与对 / 的请求相同)。

如果您使用纯 webpack-dev-server 进行开发,我不确定最好的方法是什么,但您可以看看这里的答案,它可能会起作用:Stating directive templateUrl relative to root

关于javascript - 路由与react-router(-redux)不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093329/

相关文章:

javascript - 显示输出时遇到问题

javascript - 上传和显示图像 - ReactJs、Node.js

javascript - 未捕获的类型错误 : Cannot read property 'setState' of undefined

javascript - 使用 react-autoBind 时 ReactJs setState 未定义

reactjs - 我可以为两条路线使用相同的路线处理程序吗

javascript - Ember 2.10.x 通过 Action(Popover)将 elemendId 从子组件传递到父组件

javascript - 哪里写成功和错误

javascript - 如果我来自外部应用程序,是否检测 React 路由器中的先前路径?

javascript - 在 JS 中超过 700 毫秒的 800 万次迭代可以吗?如何加速?

javascript - React-router中的path和url有什么区别