我做了一个搜索输入,当搜索关键字发生变化时触发函数getSearchResult
来获取一个渲染的结果数组,无论如何,这是我当前的实现:
getSearchResult(text){
var res = [];
for(var i = 0;i<myData.length;i++){
for(var j=0;j<myData[i].content.length;j++){
if(myData[i].content[j].content.indexOf(text) != -1){
res.push(myData[i].content[j]);
}
}
}
return res;
}
// var myData = require("./data.json");
render() {
const { navigate } = this.props.navigation;
// const {navigator} = this.props.navigator;
if(!this.state.onSearch){
return (
<View style={styles.container}>
<FlatList
data={myData}
getItemLayout={(data, index) => (
{length: 1000, offset: 60 * index, index}
)}
initialScrollIndex={1}
ListHeaderComponent={() => <TextInput style={styles.searchInput} value={this.state.text}
onChangeText={(text) => {
var searchResult = getSearchResult(this.state.text);
this.setState({text:text, onSearch:true, searchResult: searchResult});
//this.setState({})
}}/>}
renderItem={({item}) => <MyHomeListItem chapterName={item.chapterName} item={item}
chapterTitle={item.chapterTitle} navigation={navigate}/> }
/>
</View>
);
}else{
return(
<View style={styles.container}>
<TextInput style={styles.searchInput} value={this.state.text}
onChangeText={(text) => {
this.setState({text:text, onSearch:true});
var searchResult = getSearchResult(this.state.text);
this.setState({text:text, onSearch:true, searchResult: searchResult});
//this.setState({})
}}/>
<FlatList
renderItem={({item})=><Text>{item.content}</Text>}
/>
<Text> "search: " {this.state.text}</Text>
</View>
);
}
}
我在render()函数的同一个类中定义了getSearchResult(text)
方法,但是当触发时,控制台会给出一个错误:
Can't find variable: getSearchResult
不太熟悉如何做到这一点,有人可以帮助我找出我做错了什么吗?谢谢!
答案 0 :(得分:0)
您可以使用 this 访问课程功能。尝试使用this.getSearchResult。