Reactjs 将url的一部分传递给React中的另一个函数
有没有一种方法可以让React将用户输入的url返回并传递给函数?例如:www.site.com/foobar将把foobar传递给函数。 基本上,我要做的是在checker函数中对我的数据库中的foobar运行一个检查,如果没有,则显示404页面未找到Reactjs 将url的一部分传递给React中的另一个函数,reactjs,Reactjs,有没有一种方法可以让React将用户输入的url返回并传递给函数?例如:www.site.com/foobar将把foobar传递给函数。 基本上,我要做的是在checker函数中对我的数据库中的foobar运行一个检查,如果没有,则显示404页面未找到 const NotFound = () => (<h1>404.. This page is not found!</h1>) class App extends Component { checker :
const NotFound = () => (<h1>404.. This page is not found!</h1>)
class App extends Component {
checker : function(e){
if(foobar exists)
//load page with data
else
// {NotFound}
}
render() {
return (
<Router history={hashHistory}>
<Route path='/' component={LoginPage} />
<Route path='*' component={this.checker()} />
</Router>
)
}
}
为了扩展我在评论中所写的内容-
class App extends React.Component {
render() {
return (
<Router history={hashHistory}>
<Route path='/' component={LoginPage} />
<Route path='/:token' component={EmailValidation} />
</Router>
)
}
}
class EmailValidation extends React.Component {
state = { checked: false, valid: false }
componentDidMount = () => {
checkToken(this.props.params.token).then((valid) => {
this.setState({ checked: true, valid })
})
}
render() {
const { checked, valid } = this.state
return (
<div>
{ checked
? <div>{ valid ? 'valid' : 'invalid' }</div>
: <div>Checking token...</div> }
</div>
)
}
}
这对于有条件地呈现您想要的组件或404页面的HoC来说是一个很好的用例-它将删除404页面和电子邮件验证组件之间的绑定,这两者只是有点相关
如果你喜欢使用库,recompose有很多很好的助手可以帮你完成类似的事情
您还可以使用react router的Oneter回调/prop,尽管iirc无法直接从该回调访问道具。foobar是一个id?不,我正计划制作一个电子邮件验证系统,生成一个随机令牌,放在URL的背面。耶,就像这个路由实际上是/something/:someId,并且会处理/something/somereallyLongtoken,这取决于您使用的版本,你可以在这里找到你想要的东西,比如.com/abcdefg,我想我可以用“*”来接受任何值,我可以传递给函数,应用逻辑来确定它是否是我数据库中的令牌。我花了一段时间,但我设法找到了如何传递数据的方法。谢谢你的帮助!