Javascript 在post请求后提取数据将带回旧数据
这是我在这里的第一个问题,我只玩了几个月的网络技术,所以我要问的可能是一些琐碎的问题,但我似乎无法自己解决这个问题 我在这里尝试的是打开一个模式,并使用一个表单将一些数据发布到我的express后端。从服务器获得响应后,我通过道具将其发送到父组件Javascript 在post请求后提取数据将带回旧数据,javascript,reactjs,express,Javascript,Reactjs,Express,这是我在这里的第一个问题,我只玩了几个月的网络技术,所以我要问的可能是一些琐碎的问题,但我似乎无法自己解决这个问题 我在这里尝试的是打开一个模式,并使用一个表单将一些数据发布到我的express后端。从服务器获得响应后,我通过道具将其发送到父组件 const CreateAccount = (props) => { // context const authContext = useContext(AuthContext); const [accountType, setAc
const CreateAccount = (props) => {
// context
const authContext = useContext(AuthContext);
const [accountType, setAccountType] = useState("standard");
const [accountCurrency, setAccountCurrency] = useState("ron");
const { post, loading, error } = useFetch(process.env.REACT_APP_BACKEND, {
headers: { Authorization: `Bearer ${authContext.token}` },
});
const handleFormSubmit = async (e) => {
e.preventDefault();
const response = await post("/accounts", { accountType, accountCurrency });
console.log(response.data);
props.setHttpResponse(response.message);
// if modal is given, close it after submiting the form
props.closeModal && props.closeModal();
};
响应由消息和更新的文档组成。一切正常,文档正确地保存在数据库中,我得到了预期的响应,并且在发送响应后父组件重新加载
在父组件中,我有一个useEffect函数,当组件第一次挂载时,以及每次设置来自模式的响应时(无论我在哪里发送post请求),该函数都应该获取数据。组件确实重新呈现了,我从服务器得到了一个响应,但问题是我得到的响应是旧的响应,而不是更新的响应,新的数据是在我之前发送的post请求中设置的
const InitializedPage = () => {
Modal.setAppElement("#modal");
// context
const authContext = useContext(AuthContext);
const [userData, setUserData] = useState({});
const [createAccountResponse, setCreateAccountResponse] = useState(""); // the response i get from the modal after i send post request to the server
const { loading, get } = useFetch(process.env.REACT_APP_BACKEND, {
headers: {
Authorization: `Bearer ${authContext.token}`,
"Cache-Control": "no-cache",
},
});
// get data for specific user
useEffect(() => {
const { userId } = authContext.userData;
(async () => {
const response = await get(`/users/${userId}`);
console.log(response); // here the response is the old one whenever the component rerenders
setUserData(response.userData);
})();
}, [get, authContext, createAccountResponse]);
如果有人可以,请告诉我我错过了什么或我做错了什么
编辑:我忘了添加,如果我刷新页面,我将获得更新的数据。在CreateCount中,您正在使用道具设置响应消息。InitializedPage的useEffect是否具有您在CreateAccount中传递的属性?``是的,这里是我设置createAccountResponse状态的地方,它位于useEffect函数中。