1 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
建議,使用箭頭函數(shù)保留上下文的更好的方法this:
刪除以下內(nèi)容...
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);
}
并添加以下內(nèi)容:
state = {
taskName: ""
};
handleAddTask = e => {
let name = e.target.value;
if (this.state.taskName.trim() !== "")
this.props.newTask(this.state.taskName);
}
TypeError你得到應(yīng)得的原因undefined也是同樣的原因。我只是嘗試將所有普通函數(shù)替換為箭頭函數(shù),現(xiàn)在它們都工作正常。否則,您應(yīng)該綁定到this每個(gè)類屬性函數(shù),這是一個(gè)繁瑣的雙重過程并且性能密集。
另外,在handleAddTask功能中,請(qǐng)更新:
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 : "" });
};
這是因?yàn)?,e是:
e = {
"": 2,
ticker: "AAA",
security_type: "Stock"
};
工作演示: https://codesandbox.io/s/confident-moore-wsq5p
添加回答
舉報(bào)