首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gatsby用动态页面覆盖静态页面(createPages)?

Gatsby用动态页面覆盖静态页面(createPages)?
EN

Stack Overflow用户
提问于 2020-09-01 17:07:47
回答 1查看 100关注 0票数 1

我们有一个用户平台项目。每个用户都有一个配置文件详细信息页面(/{id}},我们是在使用createPages()构建时创建的。当登录的用户对其配置文件进行更改时,这些更改将保留在数据库中,但在再次触发构建之前,这些更改对他是不可见的。用户可能会认为他的更改丢失了,并且可能会感到沮丧。我们理想的解决方案是显示动态登录的用户的配置文件。

有没有可能用同一个url上的动态页面覆盖静态创建的页面?我们希望url保持不变(/{id}),因为用户将与其他用户共享他的链接。

代码语言:javascript
复制
// Generation of static pages
exports.createPages = async function ({ actions, graphql }) {
  const { data } = await graphql(`
    query {
      apollo {
        allProfiles {
          email
          id
        }
      }
    }
  `)
  data.apollo.allProfiles.forEach((profile) => {
    const email = profile.email
    const id = profile.id
    actions.createPage({
      path: id,
      component: require.resolve(`./src/templates/profile-detail.js`),
      context: { email: email },
    })
  })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-01 22:57:17

我认为人们对Gatsby的工作方式存在误解。您的页面在内容方面是静态的,但在JavaScript和React的逻辑方面是动态的。

您的页面目前是静态的,因为您是在构建时填充组件的,然而,您需要向和端点发出一个API请求(例如,通过axios ),以获取数据库中的更改,填充您的React状态,并在JavaScript逻辑中显示/隐藏组件,而不是在服务器本身中。

您的/{id}将完全保持不变,因为它是在createPage期间创建的,但是您将根据用户的操作添加一个逻辑。

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

https://stackoverflow.com/questions/63684608

复制
相关文章

相似问题

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