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

React使用useContext触发Invalid hook call错误无法排查求解决

错误原因

你遇到的Invalid Hook Call报错是因为违反了React Hook的调用规则:Hook只能在React函数组件的顶层、或者自定义Hook的顶层调用。
你当前的写法是把customCard当作普通函数直接调用,而非作为React组件渲染,React无法识别该调用属于组件渲染流程,因此判定Hook调用位置非法,触发报错。
另外你定义的customCard首字母为小写,React默认会将小写开头的标签识别为原生DOM元素,也会导致组件渲染逻辑异常。

修复步骤
  1. 重命名组件为大写开头,调整参数接收方式,符合React函数组件的规范:
const CustomCard = ({ item }: { item: Item }) => {
  const { theme } = useContext(ThemeContext);
  return(
     <View>
       .....
     </View>
  )
}
  1. 修改FlatList的renderItem逻辑,使用JSX语法渲染组件,将item作为props传递:
<FlatList
        showsVerticalScrollIndicator={false}
        style={{padding: 8}}
        data={items}
        renderItem={({item}) => <CustomCard item={item} />}
        keyExtractor={item => item.id}
      />

之前你在其他文件中相同的useContext代码可以正常运行,是因为那些场景下你是将组件作为JSX标签渲染,符合Hook的调用规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:00:05