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

React Native Dialog组件handleSubmit内setSeferBilgi赋值旧值问题求助

问题原因与解决方案

你的赋值逻辑本身没有错误,出现这个现象的核心原因是:React的useState状态更新是异步批量执行的。
当你在handleSubmit函数中调用setSeferBilgi后,React不会立刻修改seferBilgi的当前值,而是会把状态更新任务加入队列,等当前函数执行完毕后再批量处理更新。所以你在setSeferBilgi之后立刻打印seferBilgi,拿到的还是本次渲染周期中的旧值,并不是赋值没生效。

验证与修复方案

你可以通过两种方式确认赋值是正常的:

  1. 直接打印你构造的新状态对象,这个值就是你要写入的最新值:
const handleSubmit = () => {
  console.log(gidilenYer);
  console.log(ton);
  console.log(fiyat);
  // 构造新状态对象
  const newSeferBilgi = { GidilenYer: gidilenYer, Ton: ton, Fiyat: fiyat };
  // 直接打印新对象就能拿到正确的值
  console.log("更新后的值为", newSeferBilgi);
  setSeferBilgi(newSeferBilgi);
  setDialogVisible(false)
};
  1. 用useEffect监听seferBilgi的变化,等状态更新完成后再打印就能拿到最新值:
// 直接使用已经引入的useEffect即可
useEffect(() => {
  console.log("seferBilgi已更新,最新值:", seferBilgi);
}, [seferBilgi])

优化建议

建议你在打开弹窗的时候清空上一次的输入内容,避免旧值残留:

const showDialog = () => {
  setGidilenYer("");
  setTon(0);
  setFiyat(0);
  setDialogVisible(true);
};

内容的提问来源于stack exchange,提问作者Tarık Kantar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:27:04