То, что я пытаюсь сделать:Реагировать Native - ListView Ошибка при получении данных на одном экране
Я пытаюсь иметь страницу, где вы можете искать для конкретных элементов, это посылает запрос к API который возвращает обратно набор значений, основанный на этом поиске.
В настоящее время я использую Listview, который не отображается до тех пор, пока пользователь не разместит поисковый запрос и не щелкнет нормально. После того как пользователь нажал кнопку «Поиск», представление списка затем будет обновлено с ответом.
Что происходит:
Когда пользователь нажимает кнопку поиска, я получаю следующее сообщение об ошибке:
Undefined is not an object (evaluating 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,
},
});
Неа .. Getting же ошибка :( – Phorce
У вас есть орфографическая ошибка в JSX: 'DataSource = {this.state.SeachResults}' .. ваш отсутствующий "R" .. 'dataSource = {this.state.SearchResults}' что это? – David
f да! 7-й вопрос, я смотрю с этим листом, и это рабочий ответ! хорошо сделано! (теперь я смотрю конечно, новая ошибка: D) – csomakk