Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 将url的一部分传递给React中的另一个函数_Reactjs - Fatal编程技术网

Reactjs 将url的一部分传递给React中的另一个函数

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 :

有没有一种方法可以让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 : 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,我想我可以用“*”来接受任何值,我可以传递给函数,应用逻辑来确定它是否是我数据库中的令牌。我花了一段时间,但我设法找到了如何传递数据的方法。谢谢你的帮助!