Redux Toolkit Payload类型不识别问题求助
Redux Toolkit Payload类型不匹配问题解决
核心问题1:dispatch传参格式错误
你的setWaypointToEdit action期望接收**WaypointToEditPayload类型的对象**(包含waypoint字段),但调用时直接传入了getWaypoint的返回值(Waypoint | null),没有包裹成符合Payload结构的对象,这是类型错误的直接原因。
修复方式:
调用dispatch时,把返回值包裹成Payload结构:
dispatch(setWaypointToEdit({ waypoint: this.getWaypoint(areaNumber, waypointId) }))
核心问题2:Reducer中错误赋值state
Redux Toolkit内置Immer,允许直接“修改”state(实际是生成不可变副本),但直接给state重新赋值的写法会绕过Immer的处理,不仅不符合RTK最佳实践,还可能导致状态更新失效或类型异常。
修复后的Reducer代码:
setWaypointToEdit: (state, action: PayloadAction<WaypointToEditPayload>) => { const { currentArea } = state.areas; // 直接修改state,Immer会自动处理不可变更新 state.areas.gridPolygonsData[currentArea] = { ...state.areas.gridPolygonsData[currentArea], waypointToEdit: action.payload.waypoint, }; },
额外检查:类型定义一致性
确认gridWaypoints的元素类型确实是Waypoint,且Waypoint和RequiredWaypoint之间存在兼容关系(比如RequiredWaypoint是Waypoint的必填版本),避免潜在的类型不兼容问题。
内容的提问来源于stack exchange,提问作者Mark Philips
相关产品推荐
相关产品推荐

