react-native - ReferenceError:找不到变量:自动完成中的电影
问题描述
我需要在我的应用程序中使用自动完成功能,我正在使用这个库,因为它是我找到的唯一一个 https://www.npmjs.com/package/react-native-autocomplete-input
这样它就可以工作了。
import React, { Component } from 'react';
import Autocomplete from 'react-native-autocomplete-input';
export default class Registrar extends Component{
state = {
films: [],
query: '',
}
componentDidMount() {
const json = require('../assets/json/titles.json');
const { results: films } = json;
this.setState({ films });
}
findFilm(query) {
if (query === '') {
return [];
}
const { films } = this.state;
const regex = new RegExp(`${query.trim()}`, 'i');
return films.filter(film => film.title.search(regex) >= 0);
}
render() {
const { query } = this.state;
const films = this.findFilm(query);
const comp = (a, b) => a.toLowerCase().trim() === b.toLowerCase().trim();
return(
<Autocomplete
autoCapitalize="none"
style={styles.input}
autoCorrect={false}
data={films.length === 1 && comp(query, films[0].title) ? [] : films}
defaultValue={query}
onChangeText={text => this.setState({ query: text })}
placeholder="Enter the film title"
renderItem={({ item }) => (
<TouchableOpacity onPress={() => this.setState({ query: item.title })}>
<Text style={styles.itemText}>
{item.title} ({item.release_date})
</Text>
</TouchableOpacity>
)}
/>
}
}
但是,我的代码需要在函数内部,如下例所示,但它会生成以下错误ReferenceError: Can't find variable:films
import React, { Component } from 'react';
import Autocomplete from 'react-native-autocomplete-input';
export default class Registrar extends Component{
state = {
films: [],
query: '',
}
componentDidMount() {
const json = require('../assets/json/titles.json');
const { results: films } = json;
this.setState({ films });
}
findFilm(query) {
if (query === '') {
return [];
}
const { films } = this.state;
const regex = new RegExp(`${query.trim()}`, 'i');
return films.filter(film => film.title.search(regex) >= 0);
}
renderInputField() {
return (
<Autocomplete
autoCapitalize="none"
style={styles.input}
autoCorrect={false}
data={films.length === 1 && comp(query, films[0].title) ? [] : films}
defaultValue={query}
onChangeText={text => this.setState({ query: text })}
placeholder="Enter the film title"
renderItem={({ item }) => (
<TouchableOpacity onPress={() => this.setState({ query: item.title })}>
<Text style={styles.itemText}>
{item.title} ({item.release_date})
</Text>
</TouchableOpacity>
)}
/>
)
}
render() {
const { query } = this.state;
const films = this.findFilm(query);
const comp = (a, b) => a.toLowerCase().trim() === b.toLowerCase().trim();
return(
{this.renderInputField()}
}
}
我需要它在函数中,因为在上一个问题中回答“是”时必须出现此字段
请帮我!
解决方案
你可以尝试如下。只需添加construtor
到您的class
export default class Registrar extends Component{
construtor(props){
super(props)
this.state = {
films: [],
query: '',
}
}
}
否则检查错误行号(它将与错误一起显示),然后您可以轻松找出它发生的位置。
推荐阅读
- azure-devops - 用于在 teamcity 中托管的 WCF 应用服务项目的 Azure DevOps CI / CD 管道
- excel - 呼叫最后一行和输入号码时遇到问题
- python - 在 Google Colab 上的 Github 中获取笔记本的路径
- python - 连接python字典中的不规则列表
- math - 使用基本函数计算 X 的最佳 n(不是 Excel 大或循环)
- mongodb - 聚合查找 vs 2 查找查询性能 mongodb
- python - 使用两个字段对 Dask 数据帧进行排序
- ruby - 如何从以下网站获取数字(使用 nokogiri)
- windows - Windows:如何将开发的软件与上下文菜单“打开方式”的文件类型相关联?
- winforms - 如何从datagridview计算平均值?