Что означают два подстановочных маршрута в реагирующей маршрутизации?
Я пытаюсь понять ответный стартовый набор от kirasoft и заметил, что в их маршрутах есть две записи для подстановочного маршрута '*'. Почему их два и каков порядок старшинства? Первый маршрут, кажется, устанавливает приложение в целом, а затем второй, кажется, запускает обработчик содержимого по умолчанию... оба запускаются, и если так, какова логика между ними, они оба просто запускаются последовательно и добавляются вместе в ответе как-то?
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} />;
});
})
1 ответ
Ключевая линия в первом универсальном маршруте await next()
которая даст ссылку на следующий компонент, возвращаемый из соответствия дальше по дереву маршрутов, которое затем вставляется как дочерний элемент с <App context={state.context}>{component}</App>
, Второй универсальный метод возвращает ребенка во всех случаях, когда маршрут не совпадает '/contact'
, '/login'
, или же '/register'
, Вы можете представить себе дополнительные "дочерние элементы" для всех элементов, расположенных ниже, для более глубокого вложения компонентов по маршруту.