Expo/React Native 错误 - TypeError:未定义不是对象(评估“string.toLowerCase”)
2020-09-26
3675
因此,我正在制作一个 React Native 应用程序,我在 heroku 上设置了服务器和数据库。 使用 expo 在手机上和电脑上的网络浏览器中查看它。
在网络上,一切正常。
在手机上,我从屏幕截图中收到错误。我猜数据没有按时到达是一个问题,或者可能是有不同的写入方式?
有没有办法在不使用 Android Studio 的情况下在手机上获取完整的应用程序?
这是与错误相关的代码:
<TextInput
style={styles.input}
placeholder='Search...'
onChange={(e) => { this.handleInput(e.target.value) }}
></TextInput>
handleInput = (value) => {
if (value !== this.state.insertionIngredient) {
this.setState({ ...this.state, insertionIngredient: value });
};
};
handleFindButton = () => {
this.setState({ ...this.state, isLoading: true });
const id = searchString(this.state.insertionLanguage, this.state.data,
this.state.insertionIngredient);
const result = getById(this.state.queryLanguage, this.state.data, id);
if (id === 'No such word in the database.' || result === 'No such word in the database.') {
this.setState({ ...this.state, queryIngredient: 'No such word in the database.' });
} else {
this.setState({ ...this.state, queryIngredient: result });
};
};
const searchString = (language, state, string) => {
let array;
if (language === 'english') {
array = state.english;
} else if (language === 'spanish') {
array = state.spanish;
} else if (language === 'german') {
array = state.german;
} else if (language === 'serbian') {
array = state.serbian;
};
string = string.toLowerCase();
let filter = escapeRegExp(string);
let regex = new RegExp("^" + filter, "i");
const word = array.filter(val => {
return val.word.match(regex)
});
if (word.length > 0) {
return word[0].id;
} else {
return 'No such word in the database';
}};
2个回答
仅从错误信息来看,我相信您遇到了
string
未定义的情况。一个简单的解决方法是检查
string
是否存在,如果存在则应用 toLowerCase。示例:
if (string) string = string.toLowerCase();
else console.log("string 不存在,请查看它");
Bader
2020-09-26
问题是我使用了 onChange 方法而不是 onChangeText。因此,我不应该使用这个:
<TextInput
style={styles.input}
placeholder='Search...'
onChange={(e) => { this.handleInput(e.target.value) }}
></TextInput>
我应该使用这个:
<TextInput
style={styles.input}
placeholder='Search...'
onChangeText={(e) => { this.handleInput(e) }}
></TextInput>
Crashendo Dt
2020-10-11