Ich baue eine einfache Sport App mit react
, react-native
, react-native-router-flux
, react-redux
, mit redux
und versuchen, eine api
von Top-News Objekt zu ziehen zu meinem view
. Das Objekt, das ich brauche, wird auf meiner console log
angezeigt, kann aber nicht auf meiner view
angezeigt werden.mit Redux: API-Objekte in meiner console.log erscheinen aber nicht meine Ansicht
Der Fehler, ich bin immer ist:
Cannot read property 'cloneWithRowsAndSections' of undefined
TypeError: Cannot read property 'cloneWithRowsAndSections' of undefined at NewsList.componentWillMount
Gibt es etwas, das ich fehle?
Newsliste:
export default class NewsList extends Component {
constructor(props){
super(props);
const ds = new ListView.DataSource({
rowHasChanged: (row1, row2) => row1 != row2,
sectionHeaderHasChanged: (s1, s2) => s1 !== s2
});
this.state = {
dataSource: ds.cloneWithRowsAndSections(props.ListData)
}
}
componentWillReceiveProps(nextProps){
const dataSource = this.state.dataSource.cloneWithRowsAndSections(nextProps.ListData);
this.setState({dataSource});
}
componentWillMount(){
// console.log("whats This: ",this.props.ListData);
let data = this.props.ListData;
this.setState({
dataSource: this.ds.cloneWithRowsAndSections(data)
});
}
News_View:
render(){
console.log('TopNews', this.state.TopNews);
if(this.state.TopNews.length == 0){
return(
<View style={styles.container}>
<View style={styles.LiveStyle}>
<Live style={styles.LiveStyle} />
</View>
<View style={styles.container}>
<Text style={[styles.NotFollowTeamMsg, styles.centerTeamMsg]}>
Your not connected to the api
</Text>
</View>
</View>
)
} else {
return (
<View style={styles.container}>
<NewsList
ListData={this.state.TopNews}
/>
</View>
)
}
}
im Konstruktor ich const ds = ...
, wie this.ds = ...
versucht zu ändern, sondern dass nur auf den Fehler führen:
ds is not defined ReferenceError: ds is not defined
Ich habe versucht, Herausnehmen der Konstruktorfunktion:
const ds = new ListView.DataSource({
rowHasChanged: (row1, row2) => row1 != row2,
sectionHeaderHasChanged: (s1, s2) => s1 !== s2
});
suchen Sie es außerhalb der Newslist Klasse, und ich setState
, wie folgt aus:
this.setState({
dataSource: ds.cloneWithRowsAndSections(data)
});
aber nur auf den Fehler führen:
Cannot read property 'bind' of undefined TypeError: Cannot read property 'bind' of undefined
ich schon diese beiden Optionen @ gran33 versucht haben. Der Fehler, der herauskommt, ist: $ ds ist nicht definiert ReferenceError: ds ist nicht definiert $ – Checkk
@Checkk Ich habe Ihren Fehler auch, und mein Vorschlag funktionierte für mich. Deine Klasse kennt deine 'ds'-Variable nicht, da du sie nicht zu' this.ds = ... 'hinzugefügt hast – gran33