javascript - Reactjs關(guān)于函數(shù)內(nèi)跳轉(zhuǎn) this.context.router.push(path)的問(wèn)題
問(wèn)題描述
請(qǐng)教各位師兄了。我創(chuàng)建了一個(gè)組件Component,并在內(nèi)部中的一個(gè)ajax成功回調(diào)內(nèi),寫了this.context.router.push('/user/list')類似的跳轉(zhuǎn)功能。同時(shí)在組件外寫了Component.contextTypes={ router: React.PropTypes.object.isRequired }。ajax也成功請(qǐng)求了,但是頁(yè)面并沒(méi)有跳轉(zhuǎn),有點(diǎn)疑問(wèn)了。。。代碼結(jié)構(gòu)類似:
class Component extends React.Component{ ... success: function(data) {alert(data);this.context.router.push(...) }}Component.contextTypes={ router: React.PropTypes.object.isRequired}
問(wèn)題解答
回答1:是不是拿不到this?. 試試用 success()->()
回答2:這里寫一下在網(wǎng)上查找答案時(shí)遇到的坑,同時(shí)也是為了告訴后來(lái)遇到同樣或者相似問(wèn)題的小白吧,還請(qǐng)相關(guān)帖子管理人員別刪:在 Component.contextTypes這兒,我查到過(guò)有人把它以這種方式寫到過(guò)組件內(nèi)部:
class Component extends React.Component{ [有些人寫static有些人又不寫static] contentTypes: {router: React.PropTypes.object.isRequired } ... this.context.router.push(...)}
然而這么做我這兒始終出問(wèn)題,就是報(bào)錯(cuò) Cann’t read the property ’push’ is not defined。不太明顯為啥呢,先記下來(lái)再說(shuō)吧
回答3:'Cann’t read the property ’push’ is not defined'這個(gè)錯(cuò)誤確保contextTypes寫好了并且構(gòu)造函數(shù)調(diào)用super是沒(méi)有把context弄丟
class Component { constructor(props, context) { super(...arguments) // 這樣才行,如果只寫props, 會(huì)把context 弄丟,所以super時(shí)始終建議這么寫 }}
相關(guān)文章:
1. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等2. sql語(yǔ)句 - mysql中關(guān)聯(lián)表查詢問(wèn)題3. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變4. html5 - 有可以一次性把所有 css外部樣式轉(zhuǎn)為html標(biāo)簽內(nèi)style=" "的方法嗎?5. javascript - vscode alt+shift+f 格式化js代碼,通不過(guò)eslint的代碼風(fēng)格檢查怎么辦。。。6. html - vue項(xiàng)目中用到了elementUI問(wèn)題7. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?8. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?9. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?10. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?
