【问题标题】:React Router redirect to index反应路由器重定向到索引
【发布时间】:2016-10-21 04:04:58
【问题描述】:

我正在使用 Reactjs、React 路由器和中继。问题是:在我的程序组件中,我单击的所有链接都重定向到主页,而元素的 url 正是我所期望的。例如:如果我单击指向 /community/2/program/3 的链接,它会将我重定向到主页,但是当我在浏览器地址栏中输入 /community/2/program/3 时,我可以访问该页面。

我的 index.js:

const rootNode = document.createElement('div');
document.body.appendChild(rootNode);

ReactDOM.render(
  <Router
    history={browserHistory}
    routes={Route}
    render={applyRouterMiddleware(useRelay)}
    forceFetch
    environment={Relay.Store}
  />,
  rootNode
);

我的路线:

import React from 'react';
import { IndexRoute, Route, Redirect } from 'react-router';

// Queries
import ViewerQuery from './ViewerQuery';
import ProgramQuery from './ProgramQuery';

// Component
import AppContainer from '../components/App/AppContainer';
import FeatureContainer from '../components/Feature/FeatureContainer';

// Container
import ProgramContainer from '../components/Program/ProgramContainer';
import UserContainer from '../components/User/UserContainer';

export default (
  <Route path='/' component={AppContainer} queries={ViewerQuery}>
    <IndexRoute component={FeatureContainer} queries={ViewerQuery} />
    <Route path='/community/:cid' component={ProgramContainer} queries={ProgramQuery} />
    <Route path='/community/:cid/program/:gid' component={UserContainer} queries={ProgramQuery} />
    <Redirect from='*' to='/' />
  </Route>
);

程序组件:

return (
<ListGroup style = {{paddingLeft: 50, paddingRight: 50, marginBottom:0}}>
                      {this.props.viewer.groups.map((group) => {
                          return (
                                  <Col key={group.groupId} xs={12} md={4} style={{marginTop: 20}}>
                                      <Card shadow={0} style={{width: '100%'}}>
                                          <CardTitle className = {styles.cardTitleBox} style={{color: 'white', height: '176px'}}>
                                              {group.name}
                                          </CardTitle>
                                          <CardText>
                                              Lorem ipsum dolor sit amet, consectetur adipiscing elit.
                                              Mauris sagittis pellentesque lacus eleifend lacinia...
                                          </CardText>
                                          <CardActions border>
                                              <Button colored>
                                                  <Link style = {{textDecoration: 'none'}} to= {`${this.props.params.cid}/program/${group.groupId}`}>
                                                      {group.name}
                                                </Link>
                                              </Button>
                                          </CardActions>
                                      </Card>
                                  </Col>

                          );
                      })}
                  </ListGroup>
)

【问题讨论】:

  • 您是否可能只是缺少前导斜杠?

标签: react-router


【解决方案1】:

关于“Link”组件的“to”属性的官方文档(参见https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#link)指出:

如果是字符串,则表示要链接到的绝对路径,例如/users/123(不支持相对路径)。

因此,将链接的路径更改为绝对 url /community/${this.props.params.cid}/program/${group.groupId} 解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2017-10-22
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多