Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在post请求后提取数据将带回旧数据_Javascript_Reactjs_Express - Fatal编程技术网

Javascript 在post请求后提取数据将带回旧数据

Javascript 在post请求后提取数据将带回旧数据,javascript,reactjs,express,Javascript,Reactjs,Express,这是我在这里的第一个问题,我只玩了几个月的网络技术,所以我要问的可能是一些琐碎的问题,但我似乎无法自己解决这个问题 我在这里尝试的是打开一个模式,并使用一个表单将一些数据发布到我的express后端。从服务器获得响应后,我通过道具将其发送到父组件 const CreateAccount = (props) => { // context const authContext = useContext(AuthContext); const [accountType, setAc

这是我在这里的第一个问题,我只玩了几个月的网络技术,所以我要问的可能是一些琐碎的问题,但我似乎无法自己解决这个问题

我在这里尝试的是打开一个模式,并使用一个表单将一些数据发布到我的express后端。从服务器获得响应后,我通过道具将其发送到父组件

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函数中。