Этот вопрос и этот вопрос имеют дело с динамическим созданием страниц с помощью 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
в браузере?