创建没有createPage的路线

时间:2019-04-18 10:07:09

标签: javascript gatsby

https://material-ui-pickers.dev/api/timepicker#keyboard-inputThis question处理通过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/

每个国家/地区的第一语言是默认语言;这是唯一的静态呈现。用户可以通过react-router在前端上切换语言环境(即导航到其他路由),而无需刷新页面。因此,没有必要为site.com/FR/en构建静态html文件。

似乎我需要使用this question来限制哪些页面仅在客户端。但是,此gatsby仍在创建页面(或者我可能误解了“页面”是什么)。

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

0 个答案:

没有答案