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

新手开发者求助:调用initPayment时遇非序列化值及Hook调用错误

initPayment调用报错的原因分析

1. 违反React Hook调用规则,且传递非可序列化值到Redux Action

React Hook(比如useSQLiteContext)有严格的调用规则:只能在函数组件的顶层作用域,或者自定义Hook的顶层作用域中调用,不能在普通异步函数、嵌套函数中调用。

你在create.asyncThunk的异步回调函数里直接调用了useSQLiteContext(),这完全不符合Hook的调用要求,因此会触发Invalid hook call错误。

同时,Redux要求Action的payload必须是可序列化的值(比如对象、数组、字符串等),而你在捕获错误后用rejectWithValue(err)把Error对象传递给了Action payload——Error属于非可序列化值,这就导致了第二个报错:A non-serializable value was detected in an action。

2. Provider嵌套顺序错误,导致上下文无法被Hook获取

你的Main组件中,SQLiteProvider包裹了Provider(Redux的Provider),但Redux Thunk的执行逻辑并不属于React组件树的渲染流程,就算在组件内dispatch这个Thunk,Thunk内部的代码也无法访问到SQLiteContext——因为Thunk的执行环境不在SQLiteProvider的上下文覆盖范围内。

另外,这种嵌套顺序也可能导致部分通过Redux连接的组件无法正确获取SQLite上下文,进一步加剧Hook调用的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:30:04