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

更新React状态变量触发跨域错误,pywebview对接PythonAPI场景

问题根因

你看到的跨域错误是React开发环境的误导输出,并非真实的跨域请求问题。
pywebview从Python侧返回的数组属于跨上下文宿主对象,和当前JS执行上下文的Array构造函数不属于同一引用,React处理状态更新时无法识别该非原生数组实例,触发未捕获错误。但由于不同上下文的隔离限制,React无法读取错误详情,最终抛出跨域错误的提示。

前置校验

先执行以下代码确认返回值的真实类型,排除控制台打印的视觉误导:

console.log('是否为当前上下文数组:', Array.isArray(response))
console.log('类型标识:', Object.prototype.toString.call(response))
console.log('构造函数是否匹配:', response.constructor === Array)

解决方案

将返回值转换为当前上下文的纯原生数组后再更新状态,任选以下一种方式即可:

  1. 用Array.from转换(推荐)
setCourses(Array.from(response))
  1. 用扩展运算符转换
setCourses([...response])
  1. 序列化后反序列化(彻底剥离宿主对象属性,兼容所有JSON支持的数据类型)
setCourses(JSON.parse(JSON.stringify(response)))

你之前使用new Array(response)的方式会将整个response作为第一个元素传入新数组,所以会出现多元素合并为单个逗号分隔字符串的问题,该方式不适用当前场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:36:04