간단한 Todo 앱을 빌드하려고하지만 오류가 발생합니다 : 누군가가 오류를 식별하는 데 도움이 될 수 있습니까 ??ReactJs 앱에서 this.state.data를 인식하지 못합니다.
오류
app.min.js:9 Uncaught TypeError: Cannot read property 'data' of undefined at Object.value [as addNewContact] (http://localhost:8888/dist/assets/js/app.min.js:9:18059) at b.value (http://localhost:8888/dist/assets/js/app.min.js:9:19043) at Object.f.invokeGuardedCallback (http://localhost:8888/dist/assets/js/app.min.js:3:5790) at g (http://localhost:8888/dist/assets/js/app.min.js:3:3021) at Object.h [as executeDispatchesInOrder] (http://localhost:8888/dist/assets/js/app.min.js:3:3241) at l (http://localhost:8888/dist/assets/js/app.min.js:2:30755) at n (http://localhost:8888/dist/assets/js/app.min.js:2:30881) at Array.forEach (native) at c (http://localhost:8888/dist/assets/js/app.min.js:3:6210) at Object.processEventQueue (http://localhost:8888/dist/assets/js/app.min.js:2:31947
코드 : 사전에
import React from 'react';
import ReactDOM from 'react-dom';
export class ContactsListApp extends React.Component {
constructor(props) {
super(props);
this.state = {
data: this.props.data
}
}
addContact(newContactObj) {
console.log(newContactObj);
var tmpStateData = this.state.data;
tmpStateData.push(newContactObj.value);
this.setState({
data: tmpStateData
});
}
render() {
return (
<div className="contact-list">
<div className="container">
<div className="row">
<div className="col-xs-12 col-sm-12 col-md-12">
<AddContactPanel addNewContact={this.addContact} />
<ContactList contacts={this.state.data} />
</div>
</div>
</div>
</div>
)
}
}
class ContactList extends React.Component {
render() {
var items = Array.prototype.map.call(this.props.contacts, function (contact, index) {
return <ContactItem name={contact.name} key={index} />
});
return (
<ul>{items}</ul>
)
}
}
class AddContactPanel extends React.Component {
constructor(props) {
super(props);
}
handleAddContact() {
var contactItem = this.refs.newContactName;
this.props.addNewContact({
"_id": (Math.random(1000 * 10) + 1),
"name": this.refs.newContactName.value,
"occupation": "myJob",
"email": "[email protected]",
"telephone": ""
});
}
render() {
return (
<div className="row">
<form>
<input required ref="newContactName" type="text" name="newContactName" />
<input type="submit" name="submit" onClick={this.handleAddContact.bind(this)} />
</form>
</div>
)
}
}
class ContactItem extends React.Component {
render() {
return (
<li>{this.props.name}</li>
)
}
}
module.exports = {
contactListApp: ContactsListApp
}
감사합니다!
설정처럼 componentDidMount 기능의 소품 값으로 상태를 설정할 수 있습니다 -'this.addContact.bind (이)' –
또한, 당신의'초기을 constructor'에 상태 내'data' 키의 값은'props.data'가 아니라'this.props.data'로 설정되어야합니다 – juandemarco