Ich erhalte diesen Fehler Uncaught TypeError: Eigenschaft ‘state’ von undefined kann nicht gelesen werden immer wenn ich etwas in das Eingabefeld von AuthorForm eingebe. Ich verwende React mit ES7.
Der Fehler tritt auf Dritte Zeile der setAuthorState-Funktion in ManageAuthorPage. Unabhängig von dieser Codezeile, selbst wenn ich eine console.log(this.state.author) in setAuthorState einfüge, stoppt sie bei der console.log und ruft den Fehler auf.
Kann kein ähnliches Problem für jemand anderen über das Internet finden.
Hier ist der Autorenseite verwalten Code:
import React, { Component } from 'react';
import AuthorForm from './authorForm';
class ManageAuthorPage extends Component {
state = {
author: { id: '', firstName: '', lastName: '' }
};
setAuthorState(event) {
let field = event.target.name;
let value = event.target.value;
this.state.author[field] = value;
return this.setState({author: this.state.author});
};
render() {
return (
<AuthorForm
author={this.state.author}
onChange={this.setAuthorState}
/>
);
}
}
export default ManageAuthorPage
Und hier ist die Autorenformular Code:
import React, { Component } from 'react';
class AuthorForm extends Component {
render() {
return (
<form>
<h1>Manage Author</h1>
<label htmlFor="firstName">First Name</label>
<input type="text"
name="firstName"
className="form-control"
placeholder="First Name"
ref="firstName"
onChange={this.props.onChange}
value={this.props.author.firstName}
/>
<br />
<label htmlFor="lastName">Last Name</label>
<input type="text"
name="lastName"
className="form-control"
placeholder="Last Name"
ref="lastName"
onChange={this.props.onChange}
value={this.props.author.lastName}
/>
<input type="submit" value="Save" className="btn btn-default" />
</form>
);
}
}
export default AuthorForm
Sie dürfen den Status NICHT direkt ändern. Es gibt
asynchronous
setState(…) dafür. Ich schreibe über diese Aussagethis.state.author[field] = value;
.– Leonid Dashko
13. September 2018 um 19:45 Uhr
einfach umwandeln
setAuthorState(event) {...};
zusetAuthorState = (event) => {...};
andernfalls müssen Sie (dies) ausdrücklich binden– CrackerKSR
18. September 2021 um 17:38 Uhr