【发布时间】:2021-01-09 05:21:57
【问题描述】:
我有一个页面 src/pages/drafts.js,我从该页面呈现一些草稿,但仅限于本地。
所以,当NODE_ENV 投入生产时,我希望/drafts 的路线是404。
import React from 'react'
if (process.env.NODE_ENV !== 'development') {
// Invoke 404 somehow...
}
const MyComponent = () => <span>smth</span>
我可以通过返回null来取消组件中的渲染。
import React from 'react'
const MyComponent = () => {
if (process.env.NODE_ENV !== 'development') {
return null
}
return (
<span>smth</span>
)
}
但这在很多方面都不是最理想的。
我还可以浏览 404 页面:
import React from 'react'
import { navigate } from 'gatsby'
const MyComponent = () => {
React.useEffect(() => {
if (process.env.NODE_ENV !== 'development') {
navigate('/404');
}
})
return (
<span>smth</span>
)
}
这可行,但如果您加载路由 /404,则 HTTP 状态代码是 200 而不是 404。
我想我的问题是,有没有办法在模板加载之前执行 404?或者以某种方式在非开发环境中删除src/pages/drafts.js?
【问题讨论】:
-
客户端重定向可能工作得很好......虽然盖茨比创建了
public/drafts/index.html,但这只是空的。
标签: reactjs graphql http-status-code-404 gatsby