2017-04-13 12 views
0

私はこの場合リアクションルータv4で作業していますが、これは重要なことです。リアクションのルートを経由したサービスのインスタンスの受け渡し

私は、AuthServiceオブジェクトが正しくインスタンス化されたAppコンポーネントを持っています。

私は、Authオブジェクトのインスタンスが同じである特定のコンポーネントを取得したいと思います。これらのコンポーネントはRouteで定義されています。

は、ここに私のコードのサンプルです:

const auth = new AuthService(); 

class App extends Component { 

    render() { 
    return (
     <div> 
     <ul> 
      <li><Link to="/">Home</Link></li> 
      <li><Link to="/splash">Login</Link></li> 
     </ul> 
     <Route exact path="/" component={Home} auth={auth}/> 
     <Route exact path="/splash" component={SplashPage} auth={auth}/> 
     </div> 
    ); 
    } 
} 

export default App; 

HomeまたはSplashPageをレンダリングするとき、彼らはルートからの典型的な小道具が、認証の無い意識を持っています。

プロンプトの1つとして認証を取得するにはどうすればよいでしょうか。ありがとうございました。

答えて

0

route render関数を使用して、authをpropとする必要があるコンポーネントにpropを渡すことができます。

<Route {...routeConfig here} render={props => (
     <Home {...props} auth={auth}/> 
)}/> 

このようにして、コンポーネントに必要なカスタムの小道具を渡すことができます。 こちらのドキュメントはlinkです。

+0

authRouteを作成して、authインスタンスを必要とするコンポーネントをレンダリングする場合はどうすればよいですか?私はこれまでずっとこれを持っています... const AuthRoute =({コンポーネント、...}} => { return( { return ; React.createElement(成分、小道具) }} /> ) } – Andrew

+0

はこれで最後のビットを解決: React.createElement(成分、{...小道具、AUTH})。 まだ新人であるという兆候は、普及したオペレータはまだ私には不思議で驚きです。 :) – Andrew

+0

私はそれと同じような状況でした。反応ルータv2のルートでレンダリングが利用できませんでした。私のための解決策は、構成されたコンポーネントを使用することでした。それは、私が追加の動作のためにコンポーネントをラップするのに役立ちます。 'AuthWrapper(AuthWrapper(Profile))/>' AuthWrapperは、authがなければProfileをレンダリングする単純なラッパーコンポーネントでした。そうでなければ、ユーザーはsigninページに移動しました。あなたはそれについてもっと読むことができます[ここ](https://facebook.github.io/react/docs/higher-order-components.html) –

関連する問題