在 Gatsby 中如何识别当前呈现的页面是否为 404?

In Gatsby how to identify if current page being rendered is 404?

src/pages 中,我根据文档“Adding a 404 Page”设置了一个 404.js 页面。在此文件中,我调用 Layout 组件并传入 location 道具。

在我的 Layout.js 文件中,我尝试根据当前页面是否为 404 有条件地呈现某些组件。在我的测试中,位置对象不会为此呈现布尔值,例如使用浏览器进行测试 asdsada:

hash: ""
host: "localhost:8000"
hostname: "localhost"
href: "http://localhost:8000/asdsada"
key: "initial"
origin: "http://localhost:8000"
pathname: "/asdsada"
port: "8000"
protocol: "http:"
search: ""
state: null

阅读后我无法找到执行此操作的方法:

在 Gatsby 中有没有一种方法可以识别当前呈现的页面是否为 404 页面,以便我可以三元化一个组件?

您应该将 src/pages/404.js 中的布尔值传递给 Layout,例如:

import React from "react"
import Layout from "../components/layout"

const NotFoundPage = () => (
  <Layout is404Page={true}>
    <div>Your Content</div>
  </Layout>
)

export default NotFoundPage