Я пытаюсь прослушать AWS События Amplify Auth в моем приложении React Native, используя Amplify Hub, как объяснено в документации .
Вот компонент, который я могу подписать вход и выход из системы:
import React, {useEffect} from 'react';
import {Button, Container, Content, Text} from 'native-base';
import {StyleSheet} from 'react-native';
import {Hub} from '@aws-amplify/core';
import Auth from '@aws-amplify/auth';
export default function Test() {
useEffect(() => {
const listener = data => {
console.log('EVENT!!!');
switch (data.payload.event) {
case 'signIn':
break;
case 'signUp':
break;
case 'signOut':
break;
case 'signIn_failure':
break;
case 'configured':
}
};
Hub.listen('auth', listener);
console.log('SUBSCRIBED!!!');
}, []);
return (
<Container>
<Content contentContainerStyle={styles.container}>
<Button
onPress={() => {
Auth.signIn({
username: 'Foo',
password: 'Bar',
})
.then(user => console.log(user))
.catch(err => console.log(err));
}}
style={styles.button}>
<Text>SignIn</Text>
</Button>
<Button
onPress={() => {
Auth.signOut().catch(err => console.log(err));
}}
style={styles.button}>
<Text>SignOut</Text>
</Button>
</Content>
</Container>
);
}
В консоли (я использую Expo) я вижу, что пользователь нажимает кнопку «ПОДПИСАТЬСЯ !!!», когда нажимает на кнопку. также появляется, но не сообщение «СОБЫТИЕ !!!».
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ
Я попытался импортировать концентратор и Auth без модульного импорта:
import {Auth, Hub} from 'aws-amplify';
вместо
import {Hub} from '@aws-amplify/core';
import Auth from '@aws-amplify/auth';
, и он работает.
Знаете ли вы, как использовать Hub с модульным импортом?