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

React Native Expo中列表在页面加载及添加任务后无法更新的问题求助

React Native Expo中列表在页面加载及添加任务后无法更新的问题求助

兄弟,我太懂这种卡好几天摸不着头脑的滋味了!咱们来拆解你的代码,把列表加载和更新的问题一个个解决掉。

一、页面加载时列表不显示的核心问题

你在useEffect里同时调用了jsonToken()和MessageLoad(),但jsonToken是异步函数——它要等AsyncStorage.getItem拿到token才会更新jsonValue,可MessageLoad根本不等它,直接就发请求了!这时候token里的参数还是空字符串,后端自然返回不了任务数据。

解决办法:把两个异步操作串起来,等token拿到手再去加载任务。可以在useEffect里封装一个异步初始化函数:

useEffect(() => {
  const initData = async () => {
    await jsonToken(); // 先等token获取完成
    await MessageLoad(); // 再发起任务列表请求
  };
  initData();
}, []);

同时优化jsonToken函数,直接处理返回值,避免多余的状态更新:

const jsonToken = async () =>{
  const storedToken = await AsyncStorage.getItem('@storage_token');
  setjsonValue(storedToken ? storedToken.replace(/['"]+/g, '') : '');
};

二、添加任务后列表不更新的问题

现在你的Postmessage发送完POST请求就完事了,没有通知页面去重新拉取最新的任务列表,所以添加完任务页面还是旧数据。

解决办法:在POST请求成功的回调里调用MessageLoad(),主动刷新列表:

const Postmessage = () => {
  axios.post(`${baseUrl}`, configData)
  .then(res => {
    console.log(res.data);
    MessageLoad(); // 请求成功后立刻重新加载任务列表
  })
  .catch(function (error) {
    console.log('Сервер ', error);
  })
}

三、setObject的异步状态更新问题

你在MessageLoad里写了:

setmessage(res.data.response.tasks)
setObject(Object.values(message));

但setmessage是异步更新状态的,刚调用完setmessage,message还是旧的状态值,所以Object.values(message)拿到的不是新数据,object状态也不会更新正确。

推荐解决办法:用useEffect监听message的变化,自动更新object,逻辑更清晰:

// 每当message更新,自动处理并更新object
useEffect(() => {
  setObject(Object.values(message));
}, [message]);

const MessageLoad = () =>{
  // 每次请求前生成最新的token,避免jsonValue更新后token还是旧的
  const requestToken = {
    params:{
      token: typeof jsonValue === 'string' ? jsonValue.replace(/['"]+/g, '') : '',
    }
  };

  axios.get(`${baseUrl}`, requestToken)
  .then(res => {
    setmessage(res.data.response.tasks); // 只更新message,剩下的交给useEffect处理
  })
  .catch(function (error) {
    console.log(error);
  })
}

另外,把token的生成移到MessageLoad内部,能保证每次请求都用最新的jsonValue,避免因为状态更新不及时导致的token失效问题。

按照上面的修改,应该就能解决页面加载时列表不显示、添加任务后列表不更新的问题了,你可以试试!

备注:内容来源于stack exchange,提问作者Artur Fik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:09:52