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

React Native Alert添加OK按钮 onPress 时iOS端报错

解决React Native Alert弹窗与Switch组件联动时的类型转换错误

嘿,这个问题我太熟啦!你遇到的JSON value '({text = OK;})' of type NSMutableArray cannot be converted to NSString报错,本质是Alert.alert的参数顺序用错了。

问题根源

React Native中Alert.alert的标准调用格式是:

Alert.alert(
  title: string,          // 必填:弹窗标题
  message?: string,       // 可选:弹窗正文消息
  buttons?: AlertButton[],// 可选:按钮配置数组
  options?: AlertOptions  // 可选:弹窗配置项
)

你现在的代码里,把按钮数组直接放在了第二个参数的位置(本该是message字符串的位置)。当只传标题时,因为第二个参数可选,所以能正常运行;但加上按钮数组后,RN会把这个数组当成message字符串来解析,自然就抛出了「数组无法转成字符串」的类型错误。

修正后的代码

只需要补全第二个参数(哪怕是空字符串也行),把按钮数组移到第三个参数的位置就搞定了:

Alert.alert(
  I18n.t('restart theme change'),
  '请重启应用以应用新主题', // 这里可以填你的提示消息,也可以用空字符串''
  [ {text: 'OK', onPress: () => RNRestart.Restart()} ],
  { cancelable: false }
)

额外提示

如果不需要弹窗正文消息,直接传空字符串占位即可,这样RN就能正确识别后续的按钮数组参数啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:22:06