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

React Native onPress报错:Undefined is not a function求助

解决React Native中undefined is not a function(handleCardPress)错误

问题核心

你的PopularJobCard组件声明了要接收handleCardPress作为props,但父组件渲染该卡片时,没有传递这个函数,导致它的值为undefined。点击卡片时调用undefined(),就触发了这个错误。

解决方案

方案1:父组件传入handleCardPress函数

找到父组件中渲染PopularJobCard的代码,确保传入正确的函数:

// 父组件示例代码
<PopularJobCard
  item={jobItem}
  selectedJob={selected}
  handleCardPress={(item) => {
    console.log('Card pressed:', item);
    // 这里添加你的业务逻辑
  }}
/>

方案2:给组件props设置默认值(避免未传时报错)

修改PopularJobCard的props解构,给handleCardPress设置默认空函数:

const PopularJobCard = ({ item, selectedJob, handleCardPress = () => {} }) => {
  // ... 原有组件代码
}

方案3:组件内部定义handleCardPress(如果不需要父组件传参)

如果你想把函数写在卡片组件内部,不需要从props接收,直接修改组件:

const PopularJobCard = ({ item, selectedJob }) => {
  // 内部定义处理函数
  const handleCardPress = (item) => {
    console.log('Card pressed!', item);
  };

  return (
    <TouchableOpacity
      style={styles.container(selectedJob, item)}
      onPress={() => handleCardPress(item)}
    >
      // ... 原有组件内容
    </TouchableOpacity>
  )
}

额外排查点

  • 检查父组件中函数的拼写,确保没有把handleCardPress写成类似handleCardPresss的错误拼写
  • 如果函数来自状态管理或外部模块,确认它已经正确初始化,不是undefined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:25:26