Ich versuche einen einfachen Posteingang zu erstellen, der einen API-Aufruf macht und ein json-Objekt zurückgibt, das eine Liste von Nachrichten enthält. Dies wird dann über Requisiten an die 'InboxList' und dann 'InboxItem' Komponenten übergeben. Wie auch immer, ich kämpfe um Requisiten, um jeden Gegenstand rendern zu können.Reagieren - Übergeben von Requisiten an 'ES6 extends' Komponenten und die korrekte Verwendung von 'bind'
Ich erhalte auch einen Fehler bei der Verwendung von bind (this), die folgende ist.
index.js:28 Uncaught (in promise) TypeError: (intermediate value).bind is not a function(…)
Ich glaube, ich brauche wegen es6 Syntax in meiner componentDidMount Methode zu binden, aber ich verstehe nicht, was der Fehler bezieht. Fwiw die JSON-Daten kommen erfolgreich zurück.
auf diese alle führt die meisten würden
geschätztexport default class Inbox extends Component {
constructor() {
super();
this.state = {
messages: [],
};
}
componentDidMount() {
this.serverRequest = axios.get('/api/messages')
.then(res => {
console.log(res.data);
})
.catch(res => {
if (res instanceof Error) {
console.log(res.message);
} else {
console.log(res.data);
}
this.setState({
messages: res.data,
}.bind(this));
});
}
render() {
return (
<div>
<InboxHeader />
<InboxList messages={this.state.messages} />
</div>
);
}
}
export default class InboxList extends Component {
render() {
return (
<ul className="dm-inbox__list">
{this.props.messages.map(message =>
<InboxItem message={message} />
)}
</ul>
);
}
}
Die richtige Antwort ist unten, aber nur als punktgenaue, Sie bekommen die 'bind ist nicht eine Funktion ', weil Sie das Objekt binden, und nicht die Funktion, so dass this.setState ({...}). bind, wird nicht den obigen Fehler werfen, aber das ist nicht die wahre Antwort , aber nur um diesen spezifischen Fehler zu erklären, den Sie bekommen. – omerts