Реактивный вход в систему с API refre sh HomeScreen после входа в систему с другим пользователем - PullRequest
0 голосов
/ 21 апреля 2020

После того, как я выйду из системы, а затем войду в систему с другим пользователем, данные о последнем пользователе сохранятся на главном экране, мне нужно, чтобы на этом главном экране появилось значение sh после входа другого пользователя.

Как это можно сделать?

это в моем componentDidMount()

async componentDidMount() {
        await Font.loadAsync({
            'AbhayaLibre-Regular': require('../assets/fonts/AbhayaLibre-Regular.ttf'),
            'AbhayaLibre-Bold': require('../assets/fonts/AbhayaLibre-Bold.ttf'),
        });
        this.setState({ fontLoaded: true });
            this.authCheck()
            if (this.state.loggedIn == "false") {
                this.props.navigation.navigate("Login");
            } else {
                this.authUser();
                this.fetchSubjects();
            }
    }

Меня это озадачивает, потому что я не уверен, как снова запустить этот код ПОСЛЕ новый пользователь входит в систему после того, как другой вышел из системы.

Код, полученный при входе в систему:

<Button icon="send" mode="contained" text="#1ebc61" color="white" onPress={() => {
    axios.post('http://homewrk.test/api/auth/login', {
        email: this.state.email,
        password: this.state.password
    }).then(res => {
        this.setState({ token: res.data.access_token });
        this.storeKey();
        this.props.navigation.navigate("Home");
    }).catch(() => {
        this.setState({ error: true })
    })
}}>

authCheck()

async authCheck() {
        const token = await AsyncStorage.getItem('access');
        const access = 'Bearer ' + token;
        console.log(access);
        axios.get(`http://homewrk.test/api/check`, {
            headers: {
                'Authorization': access,
            }
        }).then(res => {
            const isLoggedIn = res.data;
            this.setState({ loggedIn: isLoggedIn });
        })
    }

хранение ключа:

storeKey = async () => {
        try {
            await AsyncStorage.setItem('access', this.state.token);
            console.log("done");
        } catch (e) {
            console.log(e);
        }
    }

1 Ответ

0 голосов
/ 21 апреля 2020
async componentDidMount() {
    await Font.loadAsync({
        'AbhayaLibre-Regular': require('../assets/fonts/AbhayaLibre-Regular.ttf'),
        'AbhayaLibre-Bold': require('../assets/fonts/AbhayaLibre-Bold.ttf'),
    });
    this.focusListener = this.props.navigation.addListener("willFocus", () => {
        this.authCheck()
        if (this.state.loggedIn == "false") {
            this.props.navigation.navigate("Login");
        } else {
            this.authUser();
            this.fetchSubjects();
        }
    });
}

componentWillUnmount() {
    this.focusListener.remove();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...