Reactjs 如何阻止useEffect每次重新加载我的页面?
出于某种原因,每次从数据库获取状态后,我的整个页面都会重新加载。页面在闪烁,我最后出现在页面的顶部。为什么会这样 我在其他函数(如sort)中更新了整个状态,该函数无需重新加载即可完美工作。我在每个单击处理程序中都添加了event.preventDefault,所以这不应该是问题所在 使用React的一个好处是拥有一个平滑的UI,而无需重新加载,所以这很烦人Reactjs 如何阻止useEffect每次重新加载我的页面?,reactjs,axios,use-effect,use-state,Reactjs,Axios,Use Effect,Use State,出于某种原因,每次从数据库获取状态后,我的整个页面都会重新加载。页面在闪烁,我最后出现在页面的顶部。为什么会这样 我在其他函数(如sort)中更新了整个状态,该函数无需重新加载即可完美工作。我在每个单击处理程序中都添加了event.preventDefault,所以这不应该是问题所在 使用React的一个好处是拥有一个平滑的UI,而无需重新加载,所以这很烦人 function App() { const [contacts, setContacts] = useState({ items:
function App() {
const [contacts, setContacts] = useState({ items: [] });
useEffect(() => {
axios
.get('http://localhost:5000/')
.then((result) => {
setContacts({ items: result.data });
})
.catch((err) => console.log(err));
}, []);
这就是被调用的函数:
const handleSubmit = (event) => {
event.preventDefault();
if (!id) {
axios
.post('http://localhost:5000/add/', input)
.then(() => {
setInput(emptyState);
})
.catch((err) => console.log(err));
} else {
axios
.post(`http://localhost:5000/update/${id}`, input)
.then(() => {
props.updateContact(input);
setInput(emptyState);
})
.catch((err) => console.log(err));
}
window.location = '/';
};
你需要在你的[]里放点东西。 您可以看到,我们在第二个参数中将props.name传递到数组中。现在,当名称更改时,该效果将始终再次运行。
如果你没有通过任何东西,它将始终更新,将是无用的 useEffect=>{ document.title=`第页,共${props.name}`
},[props.name]您应该创建一个最小的可复制示例,最好是关于我不认为您遇到的问题是由于提供的代码造成的。如果我将联系人放在[]中,我会创建一个不断从数据库获取的无限循环。如果我在没有useEffect的情况下使用axios,我会再次创建无限循环,因此useEffect非常重要。你建议我在[]里放什么?这是逻辑。。。如果你把接触和改变接触在你的使用效果将是无限的。找到一些你可以放进去的东西,在它之后,它将获取你的数据。它将始终更新,并且将是无用的-这不是真的。作为依赖项参数的空数组将导致该效果在组件装载时仅运行一次。这绝对不是没用的,而且是经常使用的。不是说空数组,而是一个内部有联系人的数组。。。