web-dev-qa-db-ja.com

ギャツビーが404ページを表示する代わりにホームページにリダイレクトする

どういうわけかユーザーをホームページにリダイレクトすることは可能ですか(/)404ページを表示する代わりに?

12
Malakai

Gatsbyはsrc/pages/404.jsxjsx拡張機能を使用していない場合は404.js)から404ページを作成します。したがって、ホームページにリダイレクトするコンポーネントを作成すると、次のようなトリックが実行されます。

import React from 'react';

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

  return null;
}
7
Gokhan Sari

windowオブジェクトがビルド時に定義されていないため、ここでの他の回答は最終的に失敗します。代わりにこれを使用してください。 useEffectフックはcomponentDidMountと同等です。

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

export default () => {
  useEffect(() => {
    navigate('/your-redirect/');
  }, []);
  return null;
};
26
Charming Robot

次のことができます。

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

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

export default NotFoundPage
7
Sid

navigate()(以前はnavigateTo()、@ pgarciacamouに感謝)を使用してそれを行うこともできます。

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

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

export default NotFoundPage
1
Rafaell Lycan