Ниже приведен мой код для сохранения и получения моего токена JWT с помощью Redux Thunk. Но он всегда дает мой ноль. Где я не прав?
В файле profile.js я хочу получить сохраненный токен. Но он всегда дает мне ноль.Есть ли проблема в AsyncStorage.setItem и метод getItem?
Заранее спасибо:)
authAction.js
import {PostData} from '../../components/API';
import {GET_TOKEN,SAVE_TOKEN} from '../type';
import {saveUserToken} from '../../utils/asyncStorage'
export const authenticate = (request) => {
PostData("login",request,'POST')
.then(response =>{
if(response.error){
console.log("Please try again later");
}else{
if(response.meta.status=="ok"){
console.log("SUCCESS : " +response.meta.message);
saveUserToken(response.data.user.token);
dispatch({type: SAVE_TOKEN,payload:response.data.user.token})
}else{
console.log("MESSAGE : " +response.meta.message);
}
}
}).catch(error => {
console.log("ERROR : " +error);
})
}
authReducer.js
import {GET_TOKEN,SAVE_TOKEN} from '../type';
const initialState = {
token : null,
};
export default (state = initialState, action) =>{
switch(action.type){
case GET_TOKEN:
return { ...state, token: action.token };
case SAVE_TOKEN:
return {...state,token:action.token} ;
default :
return state;
}
};
asyncStorage.js
import { AsyncStorage } from 'react-native';
import {GET_TOKEN,SAVE_TOKEN} from '../redux/type';
export const saveToken = token => ({
type: SAVE_TOKEN,
token
});
export const getUserToken = () => {
return AsyncStorage.getItem('userToken')
.then((data) => {
console.log("GET TOKEN : " +data);
// dispatch({type: GET_TOKEN,payload:data})
})
}
export const saveUserToken = (response) => {
AsyncStorage.setItem('userToken',JSON.stringify(response))
.then((data) => {
alert("SAVE TOKEN = " + JSON.stringify(response));
})
}
profile.js
import React, { Component } from 'react';
import {StyleSheet,View,Text} from 'react-native';
import { connect } from 'react-redux';
import { getUserToken } from '../../utils/asyncStorage';
class profile extends Component {
static navigationOptions = {
header: null,
};
constructor() {
super();
}
componentDidMount() {
getUserToken()
console.log("TOKEN=" +this.props.token.token)
}
_bootstrapAsync = () => {
};
render() {
return (
<View style={ styles.container }>
<Text onPress={this._bootstrapAsync()}>PROFILE </Text>
</View>
);
}
}
const mapStateToProps = state => ({
token: state.token,
});
const mapDispatchToProps = dispatch => ({
getUserToken: () => dispatch(getUserToken()),
});
export default connect(mapStateToProps,mapDispatchToProps)(profile);