【发布时间】:2017-11-18 22:40:02
【问题描述】:
我正在将 ASP.NET MVC 中的站点迁移到 REACT。对于分页,我在 React 中创建了一个组件。
我面临的问题是分页 URL 的路由。当我单击分页 URL 时,React Router 无法检测到 URL 不同
让我解释一下:
app.js 代码:
import React from 'react';
import ReactDOM from 'react-dom';
import {createStore, applyMiddleware} from 'redux';
import allReducers from '../reducers/index';
import {Provider} from 'react-redux';
import ReduxPromiseMiddleware from 'redux-promise';
import { BrowserRouter, Route } from 'react-router-dom';
import Main from './main';
import Layout from './layout';
const app = document.getElementById('root');
const store = createStore(allReducers, applyMiddleware(ReduxPromiseMiddleware));
ReactDOM.render(<Provider store={store}>
<BrowserRouter>
<Layout>
<Main/>
</Layout>
</BrowserRouter>
</Provider>
,app);
主组件渲染:
render(){
return(
<main>
<Switch>
<Route exact path='/' component={HomePage}/>
<Route path='/posts' component={PostsRouter} />
<Route path='/studies' component={StudiesPage} />
</Switch>
</main>
);
}
PostsRouter 组件:
const PostsRouter = () => (
<Switch>
<Route exact path='/posts' component={PostsPage} />
<Route path='/posts/:page' component={PostsPage} />
</Switch>
);
对于 /posts 和 /posts/2,我需要组件是 PostsPage。 假设我在 /home。现在我单击一个帖子链接并将 URL 更改为 /posts。现在,如果我点击 /posts/2 链接,什么也不会发生。 React Router 不会检测到 URL 不同。
我注意到一个奇怪的事情是,如果我更改组件:
<Route path='/posts/:page' component={PostsPage} />
to
<Route path='/posts/:page' component={StudiesPage} />
如果我在 /posts URL 上单击 /posts/2 链接,那么 React Router 会将我路由到 StudiesPage 组件。
可能是我遗漏了一些明显的东西。但经过多次尝试,我一直无法找到方法。
【问题讨论】:
-
你有 fiddle 或 git 存储库吗?只是为了显示更多代码?
-
此代码尚未添加到存储库中。请告诉我你想看什么。我可以在问题中添加它。
-
尝试检查您的
PostsPage组件。this.state更新可能有问题。我的意思是它可能是更新但获得相同的内容。尝试检查一下。 -
@Boney 你有没有得到这个工作?我正在做一些非常相似的事情并且遇到了同样的问题!
-
@VirtualWolf。不幸的是,我没有解决这个问题。
标签: javascript reactjs pagination react-router