首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让下一个JS动态路由与RelayJS协同工作

如何让下一个JS动态路由与RelayJS协同工作
EN

Stack Overflow用户
提问于 2020-01-21 04:02:37
回答 1查看 326关注 0票数 1

我正在尝试将我们的路由切换到NextJS的v9 dynamic routing,不再使用以前的next-routes库。

从尝试和查看文档可以看出,如果我传入一个参数/slug,似乎会强制执行特定的文件结构。例如,用于博客文章

代码语言:javascript
复制
blog
  [slug].tsx

将允许我使用像blog/id123这样的路由。

我们使用RelayJS,它也依赖于文件名。在这种情况下,所有React组件必须以FileNameQuery格式命名查询。这意味着我需要用我传入的变量名来命名我所有的Relay查询,这将不能很好地扩展。

有没有人能让它们很好地协同工作?

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 10:30:44

示例with-relay-modern中的withData.js

代码语言:javascript
复制
if (options.query) {
  // Provide the `url` prop data in case a graphql query uses it
  // const url = { query: ctx.query, pathname: ctx.pathname }
  const variables = ctx.query
    ? Object.assign((options.variables || {}), ctx.query)
    : (options.variables || {})
  // const variables = options.variables || { }
  // const cacheConfig = { force: true }
  // TODO: Consider RelayQueryResponseCache
  // https://github.com/facebook/relay/issues/1687#issuecomment-302931855
  queryProps = await fetchQuery(environment, options.query, variables) // , cacheConfig
  queryRecords = environment
    .getStore()
    .getSource()
    .toJSON()
}

const variables = ctx.query ? Object.assign((options.variables || {}), ctx.query) : (options.variables || {})

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59830133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档