如何从索引页重定向到Gatsby.JS项目中以编程方式生成的路由

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从索引页重定向到Gatsby.JS项目中以编程方式生成的路由相关的知识,希望对你有一定的参考价值。

我想在gatsby项目中将指数/重新路由到/blog/blog路线的页面是在gatsby-node.js文件中生成的。

我尝试从Redirect导入@reach-router和返回IndexRedirect to='/blog'组件内部,但这会导致Uncaught RedirectRequest错误。

index.js文件:

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


class BlogIndex extends React.Component {
  render() {
    return (
      <Redirect to={`/blog`} />
    )
  }
}

export default BlogIndex

Error

答案

来自@reach/router docs

重定向与componentDidCatch一起使用以防止树呈现并从新位置重新开始。

因为React不会吞下错误,这可能会让您感到烦恼。例如,重定向将触发Create React App的错误覆盖。在生产中,一切都很好。如果它困扰你,请添加noThrow,重定向将在不使用componentDidCatch的情况下进行重定向。

添加一个noThrow标签似乎解决了这个问题:

<Redirect noThrow to="/topath" />

你也可以在gatsby-node.js要求盖茨比为你做这件事:

exports.createPages = ({ actions }) => {
  const { createRedirect } = actions

  createRedirect({
    fromPath: `/`,
    toPath: `/topath`,
    redirectInBrowser: true,
    isPermanent: true,
  })
}

more here


我将此重定向规则添加到托管网站的位置。

另一答案

请改用它。 useEffect是相当于componentDidMount的React钩子。

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

export default () => {
  useEffect(() => {
    navigate('/blog/');
  }, []);
  return null;
};

以上是关于如何从索引页重定向到Gatsby.JS项目中以编程方式生成的路由的主要内容,如果未能解决你的问题,请参考以下文章

将一页重定向到 http 而不是 https

将404错误页重定向到任意页

基于位置选择的着陆页重定向(Cookie?)[关闭]

如何在 Swift 中以编程方式打开 icloud 应用程序(文件)

如何使用 Graphql 从 Strapi 查询 Gatsby 中的多个图像

如何使用web.config将所有.asp页面重定向到IIS上的.php页面