gpt4 book ai didi

javascript - 为什么 React router v4 会做出错误的重定向?

转载 作者:行者123 更新时间:2023-12-03 00:50:34 25 4
gpt4 key购买 nike

我有一个简单的 React 应用程序,我正在尝试实现身份验证逻辑。这就是我的应用程序的样子:

class App extends Component {
render() {
return (
<Router history={history}>
<div className="App">
<Switch>
<PrivateRoute path="/account" component={Account} />
<Route component={PublicLayout} />
</Switch>
</div>
</Router>
)
}
}

我的身份验证逻辑是:如果用户 isAuthenticated === true 呈现 /account 页面,否则重定向到 /signin。为此,我创建了自己的简单 PrivateRoute 功能组件:

export default ({ component: Component, ...args }) => {
return (
<div>
<Route {...args} render={(props) => {
return fakeAuth.isAuthenticated === true
? <Component {...props} />
: <Redirect to='/signin' />
}} />
</div>
)
}

因为 PrivateRoute path="/account" 不是确切路径,我希望如果用户转到 /account-setting 它将重定向他到/sign-in。但这不起作用。用户成功转到 /account-setting 并看到 PublicLayout。

这是为什么呢?路由中没有精确键,它必须获取从“/account”开始的所有内容,并在 PrivateRoute 功能组件中使用我的逻辑。

最佳答案

不提供 exact 属性并不意味着它将匹配 /account/account-settings 但它会匹配 /帐户/帐户/其他/帐户/其他/路径。因此,您需要提供两个路径:

<PrivateRoute path="/account" component={Account} />
<PrivateRoute path="/account-setting" component={Account} />

或者,您可以使用正则表达式:

<PrivateRoute path="/account(?=\S*)([a-zA-Z-]+)" component={Account} />

关于javascript - 为什么 React router v4 会做出错误的重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53061658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com