Я использую React Native с Redux. Следующий код используется для создания хранилища Redux и использует AsyncStorage для проверки входа пользователя в систему, проверяя наличие authToken.Невозможно прочитать значение AsyncStorage при запуске приложения React Native
import {createStore} from 'redux';
import {persistStore} from 'redux-persist';
async function getAuthToken() {
return await AsyncStorage.getItem('authToken');
}
export function createStore(onCompletion:() => void):any {
...
const store = createStore(
reducer,
{
auth: {
authenticated: !!getAuthToken()
}
},
enhancer);
persistStore(store, {
storage: AsyncStorage,
},
onCompletion);
}
Создание магазина:
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
store: createStore(...),
};
}
render() {
return (
<Provider store={this.state.store}>
<AppNavigator />
</Provider>
);
}
}
Значение authToken
некорректной устанавливается один раз входа пользователя в систему, и удаляется, когда пользователь выходит из системы. Но authToken не сохраняется, после того как приложение перезагрузилось. Первый вызов getAuthToken
всегда возвращает это значение нежелательной из AsyncStorage
:
{_45: 0, _81: 0, _65: нуль, _54: нулевой}
Почему это могло случиться?
Это не работает для меня, и я все равно получаю тот же результат. Я понял, что «ожидание» уже синхронно. Я также использую один и тот же шаблон ожидания, чтобы синхронно извлекать authToken из AsyncStorage и отправлять в HTTP-заголовок, который работает. – Simian