无法在onTextChange reactnative中调用函数

时间:2017-07-22 14:35:06

标签: javascript input react-native state

我做了一个搜索输入,当搜索关键字发生变化时触发函数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

不太熟悉如何做到这一点,有人可以帮助我找出我做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 this 访问课程功能。尝试使用this.getSearchResult。