【发布时间】:2018-08-09 07:17:39
【问题描述】:
我在我的 reactjs 应用程序中使用受保护的路由,我想知道如何在受保护的路由中传递道具,或者是否有更优雅的方法来解决我的问题。
我觉得需要在受保护的路由中传递道具的原因是注销按钮位于受保护的组件内,我需要与包含用户正在尝试的所有路由的父组件通信退出。
以下是相关代码:
父组件:
render() {
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={(props) => (
isAuthenticated === true
? <Component {...props} /*I tried inserting handleLogout={this.handleLogout} here */ />
: <Redirect to="/Login"/>
)} />
)
return (
<HashRouter basename={BASE_URL}>
<div className="stories-module">
<PrivateRoute
exact
path={'/login'}
component={Login}
/>
<PrivateRoute
exact
path={'/Main/'}
component={Main}
/>
</HashRouter>
)};
很遗憾,我不知道还有什么办法可以解决这个问题。
在路由组件中传递道具是否被认为是不好的做法?如果是这样,我还能如何处理,如果不是,我该如何正确传递道具?
【问题讨论】:
-
你正在尝试的应该可以工作,但你可以将你的
PrivateRoute声明移到类范围之外。
标签: javascript reactjs react-router