【问题标题】:View not rendering when redirected programmatically - Reactjs Connected Router以编程方式重定向时查看不呈现 - React Js Connected Router
【发布时间】:2019-02-08 05:38:15
【问题描述】:

当用户令牌在本地存储中可用并且在浏览器上获取“/login”网址时,应将用户重定向到仪表板页面。

所以代码写成如下。

const history = createHistory();
const { token, location } = this.props;
<ConnectedRouter history={history}>
  <Switch>
    <Route path="/login" render={ () => (token && <Redirect to="/dashboard"/>) || <Login />}
    />
    <Route exact path="/dashboard" component={Dashboard} />
  </Switch>
</ConnectedRouter>

Dashboard 组件编写如下。

class Dashboard extends PureComponent {

  render() {
    return (
      <div className="dashboard-wrapper">
          This is a dashboard view
      </div>
    );
  }
}

Package.json 依赖项

    "dependencies": {
    "axios": "^0.18.0",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-redux": "^5.1.1",
    "react-router-dom": "^4.3.1",
    "react-router-redux": "^5.0.0-alpha.9",
    "react-scripts": "2.1.3",
    "redux": "^4.0.1",
    "redux-logger": "^3.0.6",
    "redux-saga": "^1.0.0"
  },

问题是,从登录页面重定向时,仪表板视图未呈现。

当前行为 -

  • 当输入 '/login' 时,它应该重定向到 '/dashboard' - 现在工作'
  • 这是仪表板视图”重定向到仪表板页面时要呈现的文本 - 不工作

预期行为 - '这是仪表板视图' 重定向到仪表板页面时要呈现的文本

关于如何解决这个问题的任何想法。

编辑 1:

如果我使用浏览器路由器而不是连接路由器,上面的代码可以正常工作。

但我需要知道使用连接路由器时出现什么问题。

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    你只需要将 props 定义为 render prop 功能组件中的参数

    const history = createHistory();
    const { token, location } = this.props;
    <ConnectedRouter history={history}>
      <Switch>
        <Route path="/login" render={ (props) => (token && <Redirect to="/dashboard"/>) || <Login {...props}/>}
        />
        <Route exact path="/dashboard" component={Dashboard} />
      </Switch>
    </ConnectedRouter>
    

    【讨论】:

    • 似乎不起作用。添加代码 (token && ) || } />。但仍然有同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2017-09-18
    • 2021-11-10
    • 2016-07-01
    • 2016-03-07
    • 2018-05-02
    • 2017-10-31
    相关资源
    最近更新 更多