Gatsby重定向到主页,而不是显示404页面

Mal*_*kai 8 gatsby

是否可以通过某种方式将用户重定向到首页(/),而不是显示404页面?

Cha*_*bot 12

此处的其他答案最终将失败,因为window在构建时未定义对象。改用它。所述useEffect钩相当于componentDidMount

import { useEffect } from 'react';
import { navigate } from 'gatsby';

export default () => {
  useEffect(() => {
    navigate('/your-redirect/');
  }, []);
  return null;
};
Run Code Online (Sandbox Code Playgroud)

  • 这是对我有效的唯一选择,没有错误或警告。 (3认同)

Gok*_*ari 11

Gatsby 从src/pages/404.jsx(或者404.js如果您没有使用jsx扩展程序)创建 404 页面。因此,创建一个重定向到主页的组件应该可以做一些技巧,如下所示:

import React from 'react';

export default function NotFound() {
  if (typeof window !== 'undefined') {
    window.location = '/';
  }

  return null;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以执行以下操作:

import React from 'react'
import { Redirect } from '@reach/router'

const NotFoundPage = () => <Redirect to="/" />

export default NotFoundPage
Run Code Online (Sandbox Code Playgroud)


小智 5

你也可以用navigate()(以前navigateTo(),谢谢@pgarciacamou)

import React from 'react'
import { navigate } from 'gatsby'

const NotFoundPage = () => {
  return navigate('/')
}

export default NotFoundPage
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,根据 GatsbyJS 文档:“_**注意**:`navigate` 以前被命名为 `navigateTo`。`navigateTo` 在 Gatsby v2 中已被弃用,并将在下一个主要版本中删除。_”。请参阅:https://www.gatsbyjs.org/docs/gatsby-link/ (2认同)