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
添加回答
舉報