DIEA
2023-05-18 10:07:36
這是我的例子: https: //codesandbox.io/s/test-uz-713xy 正如你在這個相當不錯的例子中看到的,我嘗試將 2 種不同的方法分配給 2 個不同的按鈕(“skyfall”和“vileMurder”) .但是這些方法是從我的班級外部調用的,因此無法正確識別它們,我收到以下錯誤消息:skyFall is not defined 或vileMurder is not defined有人知道如何為我解決這個問題嗎?
1 回答

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
這些函數確實沒有在您調用它們的范圍內定義。這可以通過兩個步驟解決:
1. 從 Profils 組件中將函數作為 props 傳遞
<IsHeStillAlive
skyFall={this.skyFall}
vileMurder={this.vileMurder}
panel={panel}
并更改映射函數以采用 lambda 而不是function因為函數將自己的 this 變量綁定到函數上下文。
this.state.data.map((panel) => {
2.使用道具IsHeStillAlive
<Button onClick={() => props.vileMurder()}>
...
<Button onClick={() => props.skyFall()}>
上面的更改足以識別和執行功能,但還有其他錯誤,也與this. 我建議您閱讀有關this.
您可能也有興趣將您的組件轉換為反應掛鉤。雖然這不是強制性的,但這是現在推薦的定義組件的方式,它可以防止大多數上下文綁定問題的發生。
添加回答
舉報
0/150
提交
取消