【发布时间】:2020-12-19 17:36:30
【问题描述】:
由于某种原因,我的整个页面在每次从数据库获取状态后更新状态时都会重新加载。页面闪烁,我最终到达页面顶部。这是为什么呢?
我在 sort() 等其他函数中更新整个状态,无需重新加载即可完美运行。我已经将 event.preventDefault() 放在每个点击处理程序中,所以这不应该是问题。
使用 React 的一大好处是无需重新加载即可获得流畅的 UI,因此这很烦人。
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 = '/';
};
【问题讨论】:
-
您应该创建一个最小的可重现示例(最好在 codesandbox 上)
-
我不认为您遇到的问题是由于提供的代码造成的。
标签: reactjs axios use-effect use-state