Создать маршрут без createPage - PullRequest
0 голосов
/ 18 апреля 2019

Этот вопрос и этот вопрос имеют дело с динамическим созданием страниц с помощью exports.createPages API.

У меня немного другая потребность.Мне нужно создать несколько страниц (то есть создать статические html-файлы во время сборки), а затем создать некоторые другие «страницы», но без создания html-файлов во время сборки.

Мой вариант использования для многоязычного, многоязычного-страна сайт, который заполняется cms.Скажем, у него есть структура маршрутизации, подобная

# US site in english, spanish, german
# should SSR site.com/US/en
# should NOT SSR spanish or german 
site.com/
  US/
    en/
    es/
    de/

# France site in french, english, swedish
site.com/
  FR/
    fr/
    en/
    sw/

Первый язык для каждой страны - язык по умолчанию;это только , который статически отображается.Пользователь может переключать локали (т. Е. Переходить на другой маршрут) на внешней стороне через реагирующий маршрутизатор без обновления страницы.Таким образом, нет смысла создавать статический html-файл для, скажем, site.com/FR/en.

Похоже, мне нужно использовать onCreatePage для ограничения того, какие страницы являются только на стороне клиента,Однако этот Гэтсби все еще создает страницы (или, может быть, я неправильно понимаю, что такое «страница»).

const defaultLocalesForCountry = {
  US: 'en',
  JP: 'en',
  FR: 'fr',
  DE: 'de',
  KR: 'ko',
  CN: 'zh-hant',
  RU: 'ru',
  ZZ: 'en'
};

exports.onCreatePage = async ({ page, actions }) => {
  const { createPage } = actions;
  const locale = page.path.split('/')[1];
  if (defaultLocalesForCountry[COUNTRY] === locale) {
    createPage(page);
  }
};

Может быть, мне нужно явно использовать @reach-router в браузере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...