【发布时间】:2021-04-28 21:55:00
【问题描述】:
我有 2 个 React JS 页面(A 和 B),当我从 A->B 转到 A 时,每次都会刷新页面 A。我的印象是页面没有被破坏。 StackOverflow 上的所有相关问题似乎都与相反的问题有关。
页面刷新的原因是尽管使用了 useState() 来防止这种情况,但在按下后退按钮时调用了 useEffect()。我什至尝试用“props.id”参数替换“刷新”(永远不会改变)。见以下代码:
这是我到页面 A 的代码:
import { useHistory, useParams } from "react-router-dom";
import React, { useState, useEffect, useRef } from "react";
import { Link } from "react-router-dom";
export default function Test(props) {
const [refresh, setRefresh] = useState(false);
useEffect(() => {
console.log("useEffect called: "+refresh);
setRefresh(true);
},[refresh]);
return (
<>
Hello from Test
<Link to="/test2">Test me</Link>
</>
);
}
我正在使用 react-router-dom: "^5.1.2",并从 "react-router-dom" 导入 { BrowserRouter as Router };在 App.js 中并指定:
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route exact path="/test">
<Test id="1"/>
</Route>
<Route exact path="/test2">
<Test2 />
</Route>
.....
有谁知道如何防止在返回页面时触发 useEffect() ?实际页面 A 使用 REST 调用获取并显示一长串项目,我不希望每次用户加载页面 B 以查看项目然后返回页面时刷新页面。
【问题讨论】: