React Native - Listview在同一屏幕上获取数据时出错

时间:2016-08-06 14:17:32

标签: react-native

我要做的是:

我正在尝试有一个页面,您可以在其中搜索特定项目,然后向API发送请求,该请求将根据此搜索返回一组值。

目前,我使用的是Listview,在用户输入搜索字词并点击确定后才会显示。一旦用户点击了搜索,就会使用回复更新列表视图。

发生了什么:

当用户点击搜索时,我收到以下错误:

  

Undefined不是对象(评估dataSource.rowIdentities)

以下是目前的代码:

class Search extends Component {

    constructor(props) {
      super(props);

      this.state = {
          term: '',
          showResults: false,
          isSearch: false,
          SearchResults: ''
      }

      this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
      this.state = {
        SearchResults: this.ds.cloneWithRows(["Row 1", "Row 2"]),
      };
    }

    onSearchButtonPress() {

        this.setState({isSearch: true});

    }

    _renderCategoryIcon() {


    }

    _renderSearchResults(item) {

      return (
          <Text>Hello world</Text>


      )
    }
    render() {

      if(this.state.isSearch)
      {
          return (
              <ViewContainer>
                <StatusBarBackground style={{backgroundColor: "#009fe3"}} navigator={this.props.navigator} />

                <SearchBar
                  placeholder='Search'
                  onChangeText={(text)=> this.setState({term: text})}
                  onSearchButtonPress={this.onSearchButtonPress.bind(this)}
                />

                <ListView
                  style={styles.containerView}
                  enableEmptySections={true}
                  horizontal={false}
                  initialListSize={10}
                  dataSource={this.state.SeachResults}
                  automaticallyAdjustContentInsets={false}
                  renderRow={(item) => { return this._renderSearchResults(item) }} />

              </ViewContainer>
          );

      }else{

        return (
          <ViewContainer>
            <StatusBarBackground style={{backgroundColor: "#009fe3"}} navigator={this.props.navigator} />

            <SearchBar
              placeholder='Search'
              onChangeText={(text)=> this.setState({term: text})}
              onSearchButtonPress={this.onSearchButtonPress.bind(this)}
          />


          </ViewContainer>
        )

      }
    }
}


const styles = StyleSheet.create({
  title: {
    fontSize:30,

  },

});

1 个答案:

答案 0 :(得分:2)

您已将默认Int8设置为空字符串。改为使用空数组:

SearchResults