一. vue 中使用回調函數使用 this 無效
踩坑場景:vue 實例中綁定 data 的 this 無效
解決方式:
- 使用箭頭函數解決
- let self = this
二. react 中使用回調函數使用 this 無效
踩坑場景:react 內部組件調用時傳入函數參數時,this 指向不對導致函數執行時機不對
解決方式:在函數傳參時使用箭頭函數(也有別的方法,不過此種最方便)
三. setTimeout 使用 this 失效
踩坑場景:vue,小程序
解決方式:
- setTimeout 內使用箭頭函數
- let self = this
四. mobx 使用 this 失效
解決辦法:
1.在 this 調用的當前函數中使用 @action.bound
官網原文:
action 裝飾器/函數遵循 javascript 中標準的綁定規則。 但是,action.bound 可以用來自動地將動作綁定到目標對象。 注意,與 action 不同的是,(@)action.bound 不需要一個name參數,名稱將始終基於動作綁定的屬性
注: action.bound 不要和箭頭函數一起使用;箭頭函數已經是綁定過的並且不能重新綁定
class Ticker {
@observable tick = 0
@action.bound
increment() {
this.tick++ // 'this' 永遠都是正確的
}
}
const ticker = new Ticker()
setInterval(ticker.increment, 1000)