You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

useState状态不更新:新增数据库数据后页面未同步最新数据

问题:新增数据后拉取数据仍显示旧值的解决办法

核心问题是异步操作顺序错误——你在调用新增数据的异步函数时没等待它执行完成,就立刻发起查询请求,导致数据库还没完成写入,拉取到的自然是旧数据。

先看你的提交函数代码:

const submit = async (e) => {
    e.preventDefault();
    const code = e.target.elements['text'].value;

      try {
        addTextToDataBase(text); // 这里没加await,POST请求还在处理就执行后续代码
        console.log('text added to database');
        const response = await fetch(url);
        const data = await response.json();
        setDataFromDB(data);
        console.log(data);
      } catch (e) {
        console.log(e);
      }
  };

你的addCodeToDB是异步函数,必须用await等待它执行完毕,才能确保数据已经写入数据库,再去拉取最新数据。另外注意代码里的函数名不一致:submit里调用的是addTextToDataBase,但实际定义的函数是addCodeToDB,这个笔误也要修正。

修改后的提交函数:

const submit = async (e) => {
    e.preventDefault();
    const code = e.target.elements['text'].value;

      try {
        // 加await等待POST请求完成,同时修正函数名
        await addCodeToDB(code); 
        console.log('text added to database');
        const response = await fetch(url);
        const data = await response.json();
        setDataFromDB(data);
        console.log(data);
      } catch (e) {
        console.log(e);
      }
  };

额外补充两个检查点:

  • 确认后端POST接口是同步写入数据库的,不存在写入延迟
  • 如果后端有缓存机制,要确保查询接口能获取到最新数据,而非缓存的旧值

内容的提问来源于stack exchange,提问作者Suchagreat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:37:21