【发布时间】:2018-07-02 21:19:15
【问题描述】:
根据教程和 react 文档设置简单的令牌登录后,react-native 显示找不到变量:isLogged 我尝试将 getToken 传递给 isLogged var,但显示此 Can't find variable 错误。
对不起,因为我正在尝试学习 js 和一般的反应。
在这种情况下,如果令牌存在,则将用户重定向到主页,否则重定向到登录。 那么,任何人都可以提供有关如何在这种情况下将变量作为函数传递的提示吗?
代码如下:
import React, { Component } from 'react';
import { AsyncStorage } from 'react-native';
import { NativeRouter, Route, Link, Redirect, withRouter } from 'react-router-native'
import Login from './pages/Login';
const AUTH_TOKEN = 'auth_token';
const isLogged = getToken();
class App extends Component {
componentWillMount() {
this.getToken();
}
async getToken() {
try {
let authToken = await AsyncStorage.getItem(AUTH_TOKEN);
if (!authToken) {
console.log("Token not set");
} else {
this.verifyToken(authToken)
}
} catch (error) {
console.log("Something went wrong");
}
}
async verifyToken(token) {
let authToken = token
try {
let response = await fetch('https://lpfoot.herokuapp.com/api/verify?session%5Bauth_token%5D='+authToken);
let res = await response.text();
if (response.status >= 200 && response.status < 300) {
//Verified token means user is logged in.
} else {
//Handle error
let error = res;
throw error;
}
} catch(error) {
console.log("error response: " + error);
}
}
render() {
if (isLogged) {
return this.props.history.push('./pages/Home');
} else {
return this.props.history.push('./pages/Login');
}
}
}
export default App;
【问题讨论】:
-
getToken() 是您的应用程序组件的方法,您不能在此类之外使用此方法。验证用户是否仅登录 componentWillMount() 并将状态用于您的 isLogged 变量。
-
@Maestro31 谢谢
标签: javascript reactjs react-native