我是Javascript和React-Native的新手,我正在构建一个非常简单的应用程序,它可以扫描图书的条形码,然后将其与图书的标题进行匹配。
我想我已经设法获得了ISBN编号,并且正在尝试从google-books API获取图书标题,但我一直收到错误消息"undefined is not a object(evaluating‘_this.state.results.items.title)(未定义不是对象(计算’_this.state.results.items.title)‘“)。有人能帮我找出哪里出了问题吗?我可以采取什么步骤来修复它?谢谢!如果有一大堆错误或者我的代码很糟糕,我很抱歉。我真的是个新手,非常感谢你的帮助!
import React from 'react';
import { Dimensions, StyleSheet, Text, View } from 'react-native';
import { BarCodeScanner } from 'expo';
const { width } = Dimensions.get('window');
export default class App extends React.Component {
constructor(props) {
super(props);
this.state= {
results: {
kind: '',
totalItems: 0,
items: []
}
}
this.fetchData = this.fetchData.bind(this);
}
fetchData(isbn) {
fetch(`https://www.googleapis.com/books/v1/volumes?
q=isbn:${encodeURIComponent(isbn)}`)
.then((response)=> response.json())
.then((responseData)=> {
this.setState({results: responseData})
});
}
_handleBarCodeRead = ({ type, data }) => {
var isbn = data;
this.fetchData(isbn)
var title = this.state.results.items[0].volumeInfo.title;
alert(`ISBN: ${isbn}, Title: ${title}`)
}
render() {
return (
<BarCodeScanner
onBarCodeRead={this._handleBarCodeRead}
style={[StyleSheet.absoluteFill, styles.container]}
>
<View style={styles.layerTop} />
<View style={styles.layerCenter}>
<View style={styles.layerLeft} />
<View style={styles.focused} />
<View style={styles.layerRight} />
</View>
<View style={styles.layerBottom} />
</BarCodeScanner>
);
}
}编辑:所以,我在url中遗漏了"isbn:“,这导致我得到了错误的书名。我修复了这个问题,现在在警报中,我得到了与ISBN匹配的正确书名。然而,即使我得到了警报,仍然有相同的未定义的不是一个对象(评估'_this.state.results.items.title)
https://stackoverflow.com/questions/51274161
复制相似问题