React Native出现TypeError: 尝试展开非可迭代实例报错问题求助
问题原因
- 你在扩展运算中错误使用了状态更新函数
setTaskItems而非状态值本身:setTaskItems是用来更新taskItems状态的函数,不属于数组/可迭代对象,对它使用扩展运算符...自然会触发「非可迭代实例无法展开」的报错。 - 触发错误的行
setTaskItems([...setTaskItems, task])中,你实际需要展开的是存储任务列表的状态变量taskItems,而非它的更新函数。
修复方案
直接修复
把扩展的对象替换为状态变量即可,修改后的代码为:
setTaskItems([...taskItems, task])
优化方案
因为新状态依赖旧状态的值,推荐使用函数式更新,避免因闭包导致的状态更新异常,写法更稳妥:
setTaskItems(prevItems => [...prevItems, task])
额外潜在问题提示
你代码中渲染任务项的TouchableOpacity绑定的onPress事件调用了handleAddTask(index),但当前handleAddTask没有接收参数的逻辑,如果你是想实现点击删除任务的功能,需要单独编写对应的处理函数,避免错误触发新增任务的逻辑。
内容的提问来源于stack exchange,提问作者Frankinstyyn
相关产品推荐
相关产品推荐

