【发布时间】:2022-01-08 11:42:19
【问题描述】:
我希望我的 React.js 页面在点击提交按钮后重新加载。这是因为我将新条目放入数据库中,一旦提交成功,我想从数据库中请求新数据并显示它们。
import React, {useEffect, useState} from 'react';
import axios from "axios";
const Questionnaire = () => {
const [questions, setQuestions] = useState({questions: []});
const [updated, setUpdated] = useState(false); // approach 1
// let updated = false // approach 2
const onSubmit = async (answeredQuestions) => {
let data = Object.values(answeredQuestions)
axios.put('http://localhost:8000/questionnaire/', data)
.then(response => {
// setUpdated(false); // approach 1
// updated = !updated; // approach 2
}
);
};
useEffect( () => {
axios.get('http://localhost:8000/questionnaire/', {})
.then((response) => {
setQuestions({"questions": response.data});
setUpdated(true); // approach 1
});
}, [updated]);
return (
<>
<Questions questions={questions} onSubmit={onSubmit} />
</>
);
}
export default Questionnaire;
我希望在收到axios.put() 的响应后立即执行useEffect(),以便可以请求新问题并将其显示给用户。
我尝试了两种方法,但要么axios.get() 执行了两次,要么重新渲染没有正常工作。
感谢您的支持!
【问题讨论】:
标签: javascript reactjs axios use-effect