我正在用react-native构建一个应用程序,并且在进行错误检查时遇到了一些麻烦。我正在使用 redux
和 thunk
来存储来 self 正在搜索的 API 的 JSON 文件。有时,搜索会返回一个包含错误消息的 JSON 文件(很可能是由于拼写错误或不确定我到底在搜索什么)。我正在尝试在我的应用程序中构建一个函数,该函数将在 componentWillMount
函数中运行,该函数首先检查文件是否有错误消息,如果有,则将其发送回主屏幕以重做搜索。遇到的问题是我不知道要编写什么代码才能查看错误是什么,或者即使一开始就有错误。
这就是错误对象在 JSON 文件中的样子
"error": {
"type": "NameResolutionException",
"message": "Name resolution error: Taxon 'Mallard' or 'Bat' resolve to multiple nodes"
},
这是我构建的函数
componentDidMount = () => {
console.log("STATE", this.state);
if(this.props.response.articles.error == undefined){
if(this.props.response.articles.error.type === "NameResolutionException"){
Alert.alert("Please Refine Search or Specify Taxon.")
.then(()=>this.props.navigation.navigate("Home"));
}
}
};
尽管 json 文件中包含错误对象,但 if 语句永远不会命中。
预期的输出是错误将被捕获,然后应用程序将返回主屏幕,但应用程序将失败,因为某些组件将丢失。
最佳答案
您的代码似乎不正确,您是说如果错误未定义,则比较字符串值。这是矛盾的。
它应该是这样的,考虑到错误是一个对象而不是数组
componentDidMount = () => {
console.log("STATE", this.state);
if(this.props.response.articles.error && this.props.response.articles.error.type){ // considering error object may or may not be present
if(this.props.response.articles.error.type === "NameResolutionException"){
Alert.alert("Please Refine Search or Specify Taxon.")
.then(()=>this.props.navigation.navigate("Home"));
}
else if (this.props.response.articles.error.type === "OtherPossibleStringException"){
}
else {
//Any unhandled error case
}
}
};
关于javascript - 如何在 JavaScript 中检查文件中是否存在 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57401781/