我不能为我的生活弄清楚下面的代码有什么问题,当用户通过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方法如何在第一个组件的斜坡上找到自己? –
您可能需要发布您的旧工作代码,以便我们可以看到您的意图。 –