2017-12-16 25 views
0
を指定するには、どのようにルータV4

に反応しますユーザーに許可されるルートを指定しますか?は、これらは私のアプリでは許可されたルートです許可ルートに

+0

宛先ルートでロードされたコンポーネントのcomponentWillMount機能で管理できます。反応ロード可能にすることができます、それは素敵な機能があります。 –

+0

https://reacttraining.com/react-router/web/example/no-match – arpl

答えて

0

<Switch/>の成分は、pathでない成分を有する。

<Switch> 
    <Route path="/" exact component={Home}/> 
    <Route path="/will-match" component={WillMatch}/> 
    ... More paths here 
    <Route component={NoMatch}/> 
    </Switch> 
0

「ルートはユーザーに許可されていますか?」と言われています。これは、アプリケーションに認証レイヤーがあることを意味します。

は、あなたが持っているあなたの初期状態に言うことができます:

{ 
    user: undefined, 
    logged: false 
} 

あなたは何ができるか、のようなものを、このプロパティの状態を確認するためにルートを飾るです:

const renderMergedProps = (component, ...rest) => { 
    const finalProps = Object.assign({}, ...rest); 
    return (
    React.createElement(component, finalProps) 
); 
}; 

const PrivateRoute = ({ user, component, redirectTo, ...rest }) => { 
    return (
    <Route {...rest} render={routeProps => { 
     return user.logged ? (
     renderMergedProps(component, routeProps, rest) 
    ) : (
      <Redirect to={{ 
      pathname: redirectTo, 
      state: { from: routeProps.location } 
      }} /> 
     ); 
    }} /> 
); 
}; 

あなたは可能性があり、今

<Route exact path="/" render={() => (<Redirect to="/dashboard" />)} /> 
<PrivateRoute path="/dashboard" component={App} user={user} redirectTo="/login"/> 

次に、ベストソル状態の変化に反応することは、これを還元的に実行することになります。必要に応じてもっと黙らせることができます。

関連する問題