1 回答
TA贡献1807条经验 获得超9个赞
建议,使用箭头函数保留上下文的更好的方法this:
删除以下内容...
constructor(props) {
super(props);
this.state = {
taskName: ""
};
this.handleAddTask = this.handleAddTask.bind(this);
}
handleAddTask(e) {
let name = e.target.value;
if (this.state.taskName.trim() !== "")
this.props.newTask(this.state.taskName);
}
并添加以下内容:
state = {
taskName: ""
};
handleAddTask = e => {
let name = e.target.value;
if (this.state.taskName.trim() !== "")
this.props.newTask(this.state.taskName);
}
TypeError你得到应得的原因undefined也是同样的原因。我只是尝试将所有普通函数替换为箭头函数,现在它们都工作正常。否则,您应该绑定到this每个类属性函数,这是一个繁琐的双重过程并且性能密集。
另外,在handleAddTask功能中,请更新:
handleAddTask = e => {
let name = e.target.value;
if (this.state.taskName.trim() !== "")
this.props.newTask(name);
};
解决方案
问题在于e传递给的 。将您的updateTaskName功能更改为:
updateTaskName = e => {
this.setState({ taskName: e.length > 0 ? e[0].security_type : "" });
};
这是因为,e是:
e = {
"": 2,
ticker: "AAA",
security_type: "Stock"
};
工作演示: https://codesandbox.io/s/confident-moore-wsq5p
添加回答
举报