簡體   English   中英

React-router-dom v4不呈現組件

[英]React-router-dom v4 does not render the component

我有一個復雜的問題(我想是的)。 我正在使用React-router-dom v4。 我想實施私人路線。 我有一個登錄頁面,我在其中調用API進行身份驗證,然后在登錄頁面成功后將應用程序重定向到另一個頁面。 到現在為止一切正常。 當我嘗試將我的應用程序重定向到私有路由下的另一個頁面時,問題就開始了。

這是我的NavigationContainer渲染方法(有一個Redux連接,向我提供有關userData狀態的數據:

render() {
  const { userData } = this.props

  return(
    <div style={{height: '100%', width: '100%'}}>
      <Switch>
        <Route exact path="/" component={LoginScreen} />
        <PrivateRoute path='/dashboard' authenticated={userData.isLoggedIn} component={PrivateRouteContainer} props={this.state} />
        <Route component={NotFoundPage} />
      </Switch>
    </div>
  )
}

我的PrivateRoute實現看起來像:

const PrivateRoute = ({ component: Component, authenticated, ...rest }) => {
    return(<Route {...rest} render={(props) => authenticated === true 
        ? <Component {...props} />
        : <Redirect to='/' />
    } />)
  }

最后,我的PrivateRouteContainer實現如下:

export default class PrivateRoute extends Component {

onMenuClick = (path) => {
    this.props.history.push('/dashboard' + path)
}

render() {
    return(
        <div>
            <NavigationBar onMenuClick={this.onMenuClick} />

                <Switch>
                    <Route exact path='/dashboard' component={MainPage} />
                    <Route path='/dashboard/loadFile' component={LoadFile} />
                </Switch>
            </div>
        )
    }
}

強制應用重定向到路徑的唯一方法是: dashboard/loadFile是更改項目中的某些內容並熱重新加載它。 否則,將無法強制其渲染路線。

有人可以給我一些建議嗎? 我不知道問題出在哪里。

我將其發布為答案,因為OP確認了有效性。

React路由器文檔建議在使用Redux connect()時使用withRouter

import { withRouter } from 'react-router-dom'
export default withRouter(connect(mapStateToProps)(Something))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM