0
不知道这是否是一个错误或我的反应知识缺乏。我没有得到任何错误,但过滤器不起作用。如果我把函数写入同一个文件中,过滤器工作,我做错了什么?材料UI进口过滤功能为<自动完成过滤= />
Filters.js
const filterResults = (searchText, key) => {
if (searchText.length === 0) {
return false;
}
const compareString = key.toLowerCase();
searchText = searchText.toLowerCase();
const subMatchKey = key.substring(0, searchText.length);
const distance = AutoComplete.levenshteinDistance(searchText.toLowerCase(), subMatchKey.toLowerCase());
let searchTextIndex = 0;
for (let index = 0; index < key.length; index++) {
if (compareString[index] === searchText[searchTextIndex]) {
searchTextIndex += 1;
}
}
return searchText.length > 3 ? distance < 2 : distance === 0;
return searchTextIndex === searchText.length;
};
export default filterResults;
Main.js
import filterResults from '../AutoComplete/Filters'
<AutoComplete
dataSource={location}
onUpdateInput={this.onInputChange}
searchText={this.state.city}
filter={this.filterResults}
/>
您不应该使用“this”。在filter = {this.filterResults}上,因为它不是你的组件的成员。 –
仍然无法按预期工作。 Uncaught ReferenceError:未定义自动完成 – Polisas
您还需要添加“从'material-ui/AutoComplete'导入自动完成';”到你的Filters.js文件,因为你在这里引用一个静态方法:“const distance = AutoComplete.levenshteinDistance(...)...” –