/ x | y | z /的含义

时间:2018-09-12 13:49:47

标签: javascript

在通过this时,我遇到了以下代码:

// src/routes.js

import React from 'react';
import { Route, Router } from 'react-router-dom';
import App from './App';
import Home from './Home/Home';
import Callback from './Callback/Callback';
import Auth from './Auth/Auth';
import history from './history';

const auth = new Auth();

const handleAuthentication = (nextState, replace) => {
  if (/access_token|id_token|error/.test(nextState.location.hash)) {
    auth.handleAuthentication();
  }
}

export const makeMainRoutes = () => {
  return (
    <Router history={history} component={App}>
      <div>
        <Route path="/" render={(props) => <App auth={auth} {...props} />} />
        <Route path="/home" render={(props) => <Home auth={auth} {...props} />} />
        <Route path="/callback" render={(props) => {
          handleAuthentication(props);
          return <Callback {...props} /> 
        }}/>
      </div>
    </Router>
  );
}

在handleAuthentication中,我不理解什么是/ access_token | id_token | error /。请解释。 GitHub上的代码链接为this

4 个答案:

答案 0 :(得分:2)

这是Regular Expression

|(或)表示它与access_tokenid_tokenerror匹配:

let re = /access_token|id_token|error/;

console.log(re.test("access_token")) // true
console.log(re.test("something")) // false
console.log(re.test("id_token")) // true

在其上使用.test可以测试传递给它的字符串并评估它是否适合该表达式。

答案 1 :(得分:1)

if (/access_token|id_token|error/.test(nextState.location.hash)) {
    auth.handleAuthentication();
  }

这只是一个正则表达式,用于测试location.hash是否与access_tokenid_tokenerror匹配。

条件中的|指的是OR条件。如果auth.handleAuthentication();与这三个中的任何一个匹配,它将执行location.hash

答案 2 :(得分:0)

这是一个正则表达式。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

/access_token|id_token|error/.test(nextState.location.hash)表示nextState.location.hash的值是access_token还是id_token或错误

答案 3 :(得分:0)

  

我们正在检查从Auth0返回的身份验证哈希中是否存在access_token,id_token或错误。如果是这样,我们称为handleAuthentication。

我在这里找到了答案:https://github.com/auth0-samples/auth0-react-samples/issues/21