在通过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
答案 0 :(得分:2)
|
(或)表示它与access_token
,id_token
或error
匹配:
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_token
或id_token
或error
匹配。
条件中的|
指的是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