【问题标题】:Not redirect to the same component in react在反应中不重定向到同一个组件
【发布时间】:2021-07-28 09:26:34
【问题描述】:

我的组件没有重定向到具有不同参数的同一个组件。

    <BrowserRouter basename={process.env.REACT_APP_DEFAULT_PATH ?? ''}>
        <Switch>
            ...
            <Route exact path={"/admin/logs/:page"} component={Logs} key={"Logs"} />
            ...
        </Switch>
    </BrowserRouter>

在组件中:

    this.props.history.push("/admin/logs/" + page);

它改变浏览器中的url,但不重定向

【问题讨论】:

  • 您介意分享代码吗?我想看看
  • 您应该使用 react 路由器 API 提供的路由器钩子进行历史推送...在您的代码中不清楚 this.props.history 来自哪里
  • 我不认为你应该为组件放置字符串,它需要是一个实际的组件。 &lt;Route exact path={"/admin/logs/:page"} component={Logs} key={"Logs"} /&gt;
  • @lanxion 我写了不正确的例子。我使用实际组件作为参数。问题已被标记。

标签: javascript reactjs react-router react-router-dom


【解决方案1】:

由于您的组件已经匹配并安装/渲染,它现在还需要“侦听”传递给它的路由道具的更改。

我看到您正在使用来自 this.props.history.push("/admin/logs/" + page); 的基于类的组件,因此您需要实现 componentDidUpdate 生命周期方法。

componentDidUpdate(prevProps) {
  if (this.props.match.params.page !== prevProps.match.params.page) {
    // page updated, do something
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多