React Native useState报错:状态undefined、setState不是函数
问题原因
两个异常完全由同一处语法错误导致:useState Hook 的返回值是数组,你错误使用了对象解构的语法接收返回值,导致状态和setter方法全部解构失败。
错误逻辑说明
useState(initialValue)执行后返回的是长度为2的数组:第一个元素是当前状态值,第二个元素是修改状态的setter函数,必须用数组解构(方括号[])接收- 你当前用对象解构(花括号
{})接收时,相当于尝试从数组对象上读取user、setUser、connectStatus、setConnectStatus这类自定义属性,数组本身没有这些属性,解构出来的所有值都是undefined,这就是控制台打印user得到undefined的原因 - 由于解构出来的
setUser本身是undefined,不是函数类型,调用时自然会抛出「setUser is not a function」的错误
修复方案
将两处useState的解构语法从对象解构改为数组解构即可,修正后的状态声明代码:
// 原代码的花括号{}替换为方括号[] const [connectStatus, setConnectStatus] = useState(false); const [user, setUser] = useState("martin");
额外注意点
你代码头部从react-native导入的Seperator存在两个问题:
- React Native官方内置组件不存在名为
Seperator的组件 - 单词拼写错误,正确拼写为
Separator
如果后续运行报组件不存在的错误,直接删除这个未使用的导入即可,避免编译报错。
内容的提问来源于stack exchange,提问作者emotionalDamage
相关产品推荐
相关产品推荐

