您的位置:首页 > 移动开发 > Objective-C

TypeError: expected dynamic type 'string', but had type 'object'

2017-07-15 10:28 405 查看
将React Native的版本升级到最新的0.45.1之后,出现如下错误:



通过调试无法定位错误的地方,于是从错误提示入手,注意到错误发生在调用方法showAlert的时候,猜测是Alert参数类型出错,回头看使用Alert的地方,代码如下:

...
.catch(error => {
Alert.alert('提示', error, [
{text:'确定' }])
this.state.logining = false;
})
...


很明显,error为object 不是 string,查看Alert.js的源码,如下:

class Alert {
static alert(
title: ?string,
message?: ?string,
buttons?: Buttons,
options?: Options,
type?: AlertType,
): void {
if (Platform.OS === 'ios') {
if (typeof type !== 'undefined') {
console.warn('Alert.alert() with a 5th "type" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.');
AlertIOS.alert(title, message, buttons, type);
return;
}
AlertIOS.alert(title, message, buttons);
} else if (Platform.OS === 'android') {
AlertAndroid.alert(title, message, buttons, options);
}
}
}


可见参数message为string类型,修改如下,重新run不再报错:

...
catch(error => {
Alert.alert('提示', error.message, [
{text:'确定' }])
this.state.logining = false;
})
...


注:

Alert.js的本地路径为:

your react_native project/node-modules/react-native/Libraries/Alert/Alert.js

或Github地址:

https://github.com/facebook/react-native/blob/0a712f5335d1bf04c4ff93a79b14c9e23dbd5831/Libraries/Alert/Alert.js
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  react-native TypeError
相关文章推荐