我不能爲我的生活弄清楚下面的代碼有什麼問題,當用戶通過BugAdd窗體添加一個bug時,值被傳遞給handleSubmit功能,反過來應該通過它的道具addBug。但是,當我提交表單時,我看到'console.log(「Adding bug:」,bug);'React JS - Prop重定向到ES6後undefined
但之後,我收到「react.min.js:14未捕獲的類型錯誤:無法讀取未定義的屬性'錯誤',我最初的想法是,我可能錯過了某處的.bind。
任何人能發現我的代碼的問題,這是工作的罰款重構到ES6
class BugAdd extends React.Component {
render() {
console.log("Rendering BugAdd");
return (
<div>
<form name="bugAdd">
<input type="text" name="owner" placeholder="Owner" />
<input type="text" name="title" placeholder="Title" />
<button onClick={this.handleSubmit.bind(this)}>Add Bug</button>
</form>
</div>
)
}
handleSubmit(e) {
e.preventDefault();
var form = document.forms.bugAdd;
this.props.addBug({owner: form.owner.value, title: form.title.value, status: 'New', priority: 'P1'});
// clear the form for the next input
form.owner.value = ""; form.title.value = "";
}
}
class BugList extends React.Component {
constructor() {
super();
this.state = {
bugs: bugData
}
}
render() {
console.log("Rendering bug list, num items:", this.state.bugs.length);
return (
<div>
<h1>Bug Tracker</h1>
<BugFilter />
<hr />
<BugTable bugs={this.state.bugs} />
<BugAdd addBug={this.addBug} />
</div>
)
}
addBug(bug) {
console.log("Adding bug:", bug);
// We're advised not to modify the state, it's immutable. So, make a copy.
var bugsModified = this.state.bugs.slice();
bug.id = this.state.bugs.length + 1;
bugsModified.push(bug);
this.setState({bugs: bugsModified});
}
}
你沒有綁定'this.addBug'。 – ivarni
第二個組件的addBugs方法如何在第一個組件的斜坡上找到自己? –
您可能需要發佈您的舊工作代碼,以便我們可以看到您的意圖。 –