鍍金池/ 問答/HTML/ 在事件監(jiān)聽的回調(diào)函數(shù)里調(diào)用this.setState()函數(shù)無效

在事件監(jiān)聽的回調(diào)函數(shù)里調(diào)用this.setState()函數(shù)無效

componentDidMount() {   
    eventProxy.on('event', async (id) => {
        const getList = (id) => {
            return $http.get('api/list' + id)
                .then(res => res.data.data)
        }
        const list = await getList(id)
        console.log(list)
        this.setState({ data: list}, () => console.log(this.state.data))
    })
}

整個(gè)方法寫在componentDidMount()函數(shù)里,eventProxy會(huì)監(jiān)聽一個(gè)event事件,并接收一個(gè)id參數(shù),在回調(diào)函數(shù)中使用這個(gè)id參數(shù)發(fā)送請(qǐng)求獲取一個(gè)數(shù)組,再將這個(gè)數(shù)組賦值到this.state.data。然而,console.log(list)這句話已經(jīng)成功打印出數(shù)組了,console.log(this.state.data)這句卻并沒有執(zhí)行,請(qǐng)問是為什么呢?應(yīng)該怎么解決?

by the way, state.data 在初始化的時(shí)候是個(gè)空數(shù)組。

回答
編輯回答
陌離殤

看下this指向哪里,正常來說箭頭函數(shù)里的this是靜態(tài)綁定的,指向了組件實(shí)例對(duì)象

2017年9月21日 15:01