react-router-dom - 如何修复 React Router 组件不随着路由更改而更新

标签 react-router-dom

我在 reactJs 应用程序中使用 react-router-dom 进行路由。我有一个 Route Account,里面有嵌套的路由。在 Account 组件中,我想根据当前路由 (param.id) 显示不同的组件。现在初始组件正在呈现,但是当我单击链接时,我的帐户组件仍然呈现该初始组件,而不管 url 的更改。如何让我的帐户组件更新 url 的更改。或者我应该在 AccountSwitch 组件中做些什么来识别 url 的变化并更新它的当前值 props.match.params.id ?

// app.js
<Router>
    <Route path="/account" component={Account} />
</Router>

// account.js
class Account extends Component {
    render() {
        return (
            <div>
                <Link to="/account">Messages</Link>
                <Link to="/account/orders">Orders</Link>

                <Route exact path="/account" component={Messages} />
                <Route path="/account/:id" component={AccountSwitch} />
            </div>
        )
    }
}

// accountSwitch.js
const AccountSwitch = props => {
    switch(props.match.params.id) {
        case '':
            return (
                <AccountMessages />
            );
        case 'orders':
            return (
                <AccountOrders />
            )
        default:
            return <span>select a page<span/>
    }
}

最佳答案

https://github.com/Rynebenson/og-website/blob/master/src/_components/wrappers/Account/index.js在您使用路由开关的地方,请尝试对“/account”使用精确匹配,看看是否有效。

用:

<Switch>
  <Route exact path={`/account`} component={AccountMessages} />
  <Route path={`/account/:id`} component={AccountSwitch} />
</Switch>


在导出的同时试试这个:

导出默认 withRouter(connect(mapStateToProps, mapDispatchToProps)(Account))

关于react-router-dom - 如何修复 React Router 组件不随着路由更改而更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55389823/

相关文章:

reactjs - 使用 React Router 6 将 props 从 outlet 传递给 parent

javascript - 如何处理从 Node Express 重定向到 React Client 的身份验证(react-router-dom 和 useContext)

react-router-dom - 无法返回 React Router v6

reactjs - react typescript 错误 : Invariant failed: You should not use <withRouter(App)/> outside a <Router>

reactjs - 如何在具有 protected 功能的 React Router 中映射路由?

javascript - 在 React Router v4 中获取未定义的组件

javascript - 如何按键值过滤汽车

javascript - 在 React 中,在 Render() 之前执行 API 调用和重定向的最佳方法是什么?

reactjs - 延迟加载 react-router-dom,webpack 不工作

reactjs - 如何不在登陆(登录页面)页面上呈现标题,但总是在 react-router v6 中的所有其他页面上呈现标题?