Javascript Nodejs+reactjs+jwt检查
首先,对不起我的英语。。。 我正在尝试学习如何在Reactjs中构建JWT登录和专用路由器。。。我在nodeJS中创建简单的后端系统,注册用户,列出,创建JWT令牌,并检查JWT是否正常工作,我认为。。。 问题在于react,当文件中API verifyToken中的请求得到验证时,其返回true或false,理论上是其工作的第一个映像。。。所以,当我导出这个文件并在Routes.js中导入时,它不会返回true或false,如图2所示,它会返回一个承诺 我怎么解决这个问题 再一次为我的英语感到抱歉,谢谢你可能的帮助Javascript Nodejs+reactjs+jwt检查,javascript,node.js,reactjs,jwt,Javascript,Node.js,Reactjs,Jwt,首先,对不起我的英语。。。 我正在尝试学习如何在Reactjs中构建JWT登录和专用路由器。。。我在nodeJS中创建简单的后端系统,注册用户,列出,创建JWT令牌,并检查JWT是否正常工作,我认为。。。 问题在于react,当文件中API verifyToken中的请求得到验证时,其返回true或false,理论上是其工作的第一个映像。。。所以,当我导出这个文件并在Routes.js中导入时,它不会返回true或false,如图2所示,它会返回一个承诺 我怎么解决这个问题 再一次为我的英语感到
您需要使用等待或回调承诺,而不是两者都使用:
try {
const response = await axios.get('/myRequest');
console.log(response);
} catch (error) {
console.error(error);
}
或者像这样:
axios.get('/myRequest')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
useEffect(() => {
isAuthenticated().then(auth=> /*... set the setters hooks or setState ..*/)
});
这是预期的行为。异步函数返回承诺。发件人: 异步函数声明定义了一个异步函数-a 是AsyncFunction对象的函数。异步函数 通过事件以与代码其余部分不同的顺序操作 循环,返回一个隐式承诺作为其结果 您必须记住,一旦您执行了任何异步操作,就不能在同一流程中只执行同步操作 您应该在useEffect挂钩中使用isAuthenticated函数,该挂钩将更改状态 您可以使用如下功能:
axios.get('/myRequest')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
useEffect(() => {
isAuthenticated().then(auth=> /*... set the setters hooks or setState ..*/)
});
这是正常的,因为异步函数返回承诺
async function f() {
return 1;
}
f().then(res => console.log(res)); // 1
你可以这样做来获得你的价值它返回了一个承诺我不知道如何使用它,我是react的新手,可以解释得更清楚你能写一个例子吗?它成功了,但现在的问题是Routes.js每次去/家时都需要调用isAuthenticated.js,但是我不知道我怎么认为你需要在app.js中添加一个类似isLoggedIn的状态,然后你必须作为道具发送到所有需要检查用户是否为loggedIn的组件。