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

React Native出现Invalid Hook报错,如何将colorScheme传入config配置?

报错根因

useColorScheme是React Hook,只能在React函数组件或自定义Hook的顶层作用域调用,你当前在普通JS模块的全局作用域调用Hook,违反了Hook的使用规则,所以触发Invalid Hook call报错。

解决方案

方案1:使用NativeBase内置系统颜色模式适配(推荐)

不需要手动调用useColorScheme,直接开启自带的系统颜色模式跟随即可,修改你的主题代码如下:

import {extendTheme} from 'native-base'

const config = {
    // 开启后NativeBase会自动同步系统颜色模式,无需手动赋值
    useSystemColorMode: true,
    // 可自行设置兜底的初始颜色模式
    initialColorMode: 'light'
}

const colors={
    primary:{
        50: '#EEF2F6',
        100: '#CFD9E7',
        200: '#B1C1D8',
        300: '#92A9C9',
        400: '#7491B9',
        500: '#5578AA',
        600: '#446088',
        700: '#334866',
        800: '#223044',
        900: '#111822'
    }
}
export default extendTheme({config,colors})

修改后直接在入口组件正常引入主题传给NativeBaseProvider即可生效。

方案2:手动自定义控制颜色模式

如果有特殊需求需要自己控制颜色模式,将useColorScheme的调用移到入口组件的顶层,动态给NativeBaseProvider传值即可:
主题文件和上面一致即可,入口组件代码参考:

import { NativeBaseProvider } from 'native-base';
import { useColorScheme } from 'react-native';
import theme from './theme'; // 替换为你实际的主题文件路径

export default function App() {
  const colorScheme = useColorScheme();
  return (
    <NativeBaseProvider 
      theme={theme}
      colorMode={colorScheme}
    >
      {/* 你的应用业务组件 */}
    </NativeBaseProvider>
  )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:04