簡體   English   中英

如何使用“所有”collections 與 Gatsby.js 中的文件系統路由 API 一起使用?

[英]How do I work with the 'all' collections to use with the File System Route API in Gatsby.js?

我希望使用 Gatsby.js 的文件系統路由 API從 collections 在私有 GraphQL ZDB97442387143ACE1463 中生成頁面似乎文件系統路由 API 總是使用“全部”收集請求來生成這些( allFileallSiteallPost等)。

因為我的數據來自單獨的 API,所以在 Gatsby 的架構中沒有等效的“全部”集合,並且我的數據也在gatsby-source-graphql插件的字段內命名空間。

是否可以為 Gatsby 定義我自己的“全部”收藏? 我想將allFacilities別名為my-remote-api { facilities } ,但我不確定這是否可能。

如果沒有,還有其他方法嗎?

文件系統路由 API 是由 Gatsby ( ^2.26.0 ) 開發的新品牌,用於動態創建頁面,刪除gatsby-node.js的 GraphQL 查詢並使用/pages文件夾中的語法符號 ( {} , [] , ()等)。

根據您的用例,您需要通過在“all”關鍵字前面加上前綴來推斷和修改架構(可能使用gatsby-node-helpers package中的createNodeFactorycreateNodeHelpers ,在不確切知道您的數據架構和結構的情況下,很難猜測示例代碼),但想法是:

  const nodeHelpers = createNodeHelpers({
    typePrefix: 'Shopify',
    createNodeId,
    createContentDigest,
  })
}

默認情況下,這將作為“all”關鍵字的前綴,創建一個allShopify節點,可由文件系統路由 API 查詢和使用。

另一方面,有“舊”方式:在gatsby-node.js中使用 GraphQL ,使用createPage API 動態創建頁面,使用上下文傳遞數據(通常是唯一標識符),並在模板中使用另一個按該唯一值過濾的查詢以獲取您的數據(即:在gatsby-node.js文件中,您查詢所有帖子並使用 slug 值為每個帖子動態創建頁面(使用createPage API)。然后,您通過使用上下文的標識符(slug 或標題),並在您的模板中(不是/pages作為文件系統路由 API)通過此唯一值創建過濾查詢以獲取您的帖子數據)。

如果您無法使用幫助程序自定義節點,則第二種方法可能符合您的要求。 在這里,您有Gatsby 文檔提供的關於該部分的指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM