2016-09-07 114 views
0

平時對輸入功能反應路由器的路由看起來有點simmilar這樣:傳遞自定義參數反應路由器的OnEnter功能

const isLoggedIn = (nextState, replace, callback) => { 
    /* Some checks/redirects here */ 
} 

,我們使用它的路線,像這樣

<Route onEnter={isLoggedIn} /> 

我試圖通過一個自定義參數,但沒有運氣,基本上我想達到這樣的東西

<Route onEnter={isLoggedIn(myParam)} /> 

並能夠訪問它的功能,所以

const isLoggedIn = (myParam, nextState, replace, callback) => { 
    /* Some checks/redirects here */ 
} 

回答

3

爲此,您可以使用上下文結合。 當您從React路由器中調用該函數時,只需綁定您在auth函數中需要的數據。您也可以通過這種方式傳遞對象。 你的代碼是這樣:

function requireAuth(nextState, replace) { 
 
    console.log(this.loggedIn) 
 
} 
 

 
<Route onEnter={requireAuth.bind({"loggeIn":this.props.loggedIn})} />

另一種選擇是使用函數的參數,如果你使用的ECMAScript 6:

var requireAuth=(loggedIn)=>{ 
 
    return (nextState,replace)=>{ 
 
    console.log(loggedIn) 
 
    } 
 
} 
 

 
<Route onEnter={requireAuth(this.props.loggedIn)} />

它應該工作更短:

var requireAuth=(loggedIn)=>(nextState,replace)=>{ 
 
    console.log(loggedIn) 
 
} 
 

 
<Route onEnter={requireAuth(this.props.loggedIn)} />

1

您不能更改ReactJS 提供如語法陣營中提到,我們必須使用這

的OnEnter文件(nextState,更換,回調?)

當即將輸入路線時調用。它提供下一個路由器狀態和一個重定向到另一個路徑的功能。這將是觸發掛鉤的路由實例。

如果回調被列爲第三個參數,該鉤子將異步運行,並且轉移將阻塞,直到調用回調。

PFA參考:https://github.com/reactjs/react-router/blob/master/docs/API.md#onenternextstate-replace-callback