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(...)...」 –