React Native中修改Alert提示框语言失败,报TypeError错误求助
React Native中修改Alert提示框语言失败,报TypeError错误求助
嗨,我看了你的代码,立马就发现问题所在啦!你调用Alert.alert的时候参数传错了,这才直接导致了validButtons.pop is not a function这个报错。
先给你捋清楚React Native里Alert.alert的正确参数结构:它的参数顺序是 标题、可选的提示消息、可选的按钮数组、可选的配置项,最多四个参数。
你看你写的代码里,在标题之后连续传了四个字符串,直接把原本应该放按钮数组的位置给占了。React Native会把这些字符串当成按钮参数来处理,但字符串不是数组类型,自然找不到pop方法,直接就抛错了。
下面是给你修正后的代码,不仅把参数顺序理清楚了,还把所有需要国际化的文本都统一用i18n.t()来管理,方便后续切换语言:
i18n.translations = { en: { title: 'Hello', logoutTitle: 'Logout', logoutConfirmMsg: 'Are you sure you want to logout?', cancelText: 'Cancel' }, tr: { title: 'Merhaba', logoutTitle: 'Çıkış Yap', logoutConfirmMsg: 'Çıkış yapmak istediğinizden emin misiniz?', cancelText: 'İptal' }, }; i18n.locale = "tr"; const handleLogout = () => { Alert.alert( i18n.t("logoutTitle"), // 国际化的弹窗标题 i18n.t("logoutConfirmMsg"), // 国际化的确认提示语 [ // 正确的按钮数组位置 { text: i18n.t("cancelText"), style: 'cancel', }, { text: i18n.t("logoutTitle"), style: 'destructive', onPress: performLogout, }, ] ); };
另外建议你把所有需要多语言适配的文本都提前写到i18n的翻译配置里,这样后续切换语言时,所有相关文本都能同步更新,不用零散修改各处代码。
最后再提醒下,调用Alert.alert一定要注意参数的顺序和类型,按钮必须是数组格式,每个按钮是包含text、style、onPress等属性的对象哦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

