【发布时间】:2020-12-29 06:04:02
【问题描述】:
我有the following code that redirects automatically to the About component when you load the FAQ component。这是使用自定义钩子完成的,该钩子使用useHistory() 将新路由推送到它。自定义钩子还返回一个空对象。当您不尝试使用此对象中的任何内容时,代码会完美运行,并且应用程序会重定向到 About 组件。
但是当我尝试从对象访问(不存在的)值时,我得到了value is null 错误。我不明白为什么代码甚至达到了这一点。重定向不应该在组件的其余部分被渲染之前发生吗?
import React from "react";
import "./styles.css";
import { Link, BrowserRouter, Route, useHistory } from "react-router-dom";
export default function App() {
return (
<div className="App">
<BrowserRouter>
<Link to="/about">About</Link>
<Link to="/faq">FAQ</Link>
<Route path="/about" component={About} />
<Route path="/faq" component={FAQ} />
</BrowserRouter>
</div>
);
}
function useRedirect() {
const history = useHistory();
history.push("/about");
return {};
}
function FAQ() {
const { value } = useRedirect();
return <h1>FAQ {value.name}</h1>;
}
function About() {
return <h1>About</h1>;
}
为什么在访问value之前没有发生重定向?以及如何确保我的应用在访问 value 之前重定向?
【问题讨论】:
标签: javascript reactjs react-router react-hooks react-router-dom