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. angular.js - webpack build后的angularjs路由跳轉(zhuǎn)問(wèn)題2. java - web項(xiàng)目中,用戶登陸信息存儲(chǔ)在session中好 還是cookie中好,取決于什么?3. java - Activity中的成員變量被賦值之后,Activity被回收的時(shí)候內(nèi)存才會(huì)被釋放嗎4. Discuz! Q 有人用過(guò)嗎?5. 數(shù)組按鍵值封裝!6. 我寫的哪里有錯(cuò)?請(qǐng)大神幫忙查看一下。7. 請(qǐng)求一個(gè)數(shù)據(jù)返回內(nèi)容為空或者錯(cuò)誤如何再次請(qǐng)求幾次8. 使用list和each配合,的作業(yè),輸出一行后,如何換行9. php由5.3升級(jí)到5.6后,登錄網(wǎng)站,返回的是php代碼,不是登錄界面,各位大神有知道的嗎?10. 為什么bindClass訪問(wèn)不了的?
