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

React Native中Hook调用无效求助:事件处理函数内调用useEffect报错

问题分析与解决

错误原因

你把useEffect这个React Hook直接放在了普通事件处理函数handleEvento里面,违反了React Hook的核心规则:Hook只能在函数组件的顶层作用域调用,或者在自定义Hook的顶层调用,不能嵌套在普通函数、条件判断、循环这类代码块里。

修正后的代码

直接去掉useEffect,在handleEvento里发起请求即可——这是用户点击日期触发的异步操作,不需要依赖Hook的副作用监听逻辑:

const handleEvento = async (dayy) => {
  try {
    const response = await axios.get(`http://192.168.15.11:8085/api/readEventsByDate/${dayy}`);
    // 按id升序排序数据
    const sortData = response.data.sort((a, b) => a.id - b.id);
    setData2(sortData);
    // 注意:setState是异步的,直接log data2可能拿不到最新值,建议打印排序后的结果
    console.log(sortData);
  } catch (error) {
    console.log(JSON.stringify(error));
  }
};

onDayPress={day => {
  handleEvento(day.dateString);        
}}

额外提示

如果需要查看data2更新后的最新值,因为setData2是异步操作,不能在调用后直接打印data2,可以在组件顶层加一个useEffect监听:

useEffect(() => {
  console.log(data2);
}, [data2]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:04:53