2

kirasoftによる react-starter-kit を理解しようとしていますが、ルートに「*」ワイルドカード ルートのエントリが 2 つあることに気付きました。なぜ 2 つあり、優先順位は何ですか? 最初のルートはアプリ全体を設定しているようで、次に 2 番目のルートはデフォルトのコンテンツ ハンドラを起動するようです...両方とも起動しますか?もしそうなら、2 つの間のロジックは何ですか?両方とも順番に起動して追加されますか?どういうわけか応答で一緒に?

import React from 'react';
import Router from 'react-routing/src/Router';
import http from './core/HttpClient';
import App from './components/App';
import ContentPage from './components/ContentPage';
import ContactPage from './components/ContactPage';
import LoginPage from './components/LoginPage';
import RegisterPage from './components/RegisterPage';
import NotFoundPage from './components/NotFoundPage';
import ErrorPage from './components/ErrorPage';

const router = new Router(on => {
  on('*', async (state, next) => {
    const component = await next();
    return component && <App context={state.context}>{component}</App>;
  });

  on('/contact', async () => <ContactPage />);

  on('/login', async () => <LoginPage />);

  on('/register', async () => <RegisterPage />);

  on('*', async (state) => {
    const content = await http.get(`/api/content?path=${state.path}`);
    return content && <ContentPage {...content} />;
  });
})
4

1 に答える 1

0

最初のキャッチオール ルートの重要な行はawait next()、ルート ツリーのさらに下にある一致から返された次のコンポーネントへの参照を提供するものであり、それが の子として挿入され<App context={state.context}>{component}</App>ます。'/contact'2 番目のキャッチオールは、ルートが、'/login'、または に一致しないすべての場合に子を返し'/register'ます。ツリーのさらに下に追加のキャッチオール「子」を想像して、ルートによるコンポーネントのネストを深くすることができます。

于 2015-10-22T00:53:31.003 に答える