Я работаю над React Native App, и мне нужно получить authToken, чтобы дать доступ к остальной части приложения после страницы входа в систему.
Я использую Redux и делаю Fetch в моем Loginpage
, где в начале я использовал AsyncStorage
, чтобы сохранить мой токен.Теперь я хочу сохранить свой токен в хранилище редукса.
Это мой выбор на LoginScreen.js
loginUser = async (user) => {
const reg = /^[0-9]*$/;
if ( reg.test(this.state.number) === true && (this.state.number.length === 10) && this.state.number !== '' && this.state.password !== '') {
fetch(`${API_SERVER}/auth/login`, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
number: this.state.number,
password: this.state.password,
})
})
.then((response) => response.json())
.then((response) => {
if (response.message === 'No matching user.') {
this.setState({
visibleModal: true
});
} else if (response.success === true) {
AsyncStorage.setItem('PhoneNumber', this.state.number);
this.props.saveUserToken();
this.props.navigation.navigate('LoadingScreen');
console.log(saveUserToken)
}
})
.catch((error) => {
Alert.alert(error);
});
И это мое действие Redux.
export const saveUserToken = (data) => dispatch =>
AsyncStorage.setItem('refreshToken',
JSON.stringify(response.refreshToken))
.then((data) => {
dispatch(loading(false));
dispatch(saveToken('token saved'));
})
.catch((err) => {
dispatch(loading(false));
dispatch(error(err.message || 'ERROR'));
})