javascript - 将自定义参数传递给react-router onEnter函数

标签 javascript reactjs react-router

通常在react-router路由的输入函数上看起来有点类似于:

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

我们在 Route 中使用它,就像这样

<Route onEnter={isLoggedIn} />

我试图传递自定义参数,但没有运气,本质上我想实现这样的目标

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

并且能够在函数中访问它,所以

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

最佳答案

您可以使用上下文绑定(bind)来完成此操作。 当您从 React Router 中调用该函数时,只需在您的 auth 函数中绑定(bind)您需要的数据。您也可以通过这种方式传递对象。 您的代码如下所示:

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)} />

关于javascript - 将自定义参数传递给react-router onEnter函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367700/

相关文章:

javascript - JS - 12 小时时间匹配的正则表达式

javascript - "export default from"不适用于 Babel React

reactjs - 使用 HOC 与组件包装之间的区别

reactjs - 访问react-router动态段时崩溃

javascript - 除了标记为 "All"的复选框外,JQuery 禁用并清除其他复选框

javascript - OOP Javascript Pong 游戏中的上下文位于何处?

reactjs - 如何在 Next.js 应用程序中使用 ES2020 功能

reactjs - 使用 firebase 部署后 react 网站未显示

javascript - react 路由器。当容器(页面)出现任何错误时如何防止整个应用程序崩溃

javascript - 从给定范围中排除多个范围