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
相关产品推荐
相关产品推荐

