Обновленная стоимость магазина не влияет на все компоненты? - PullRequest
0 голосов
/ 13 февраля 2019

Я устанавливаю хранилище реагирующих потоков, где я могу выполнить вход в систему с помощью Axios Call и сохранить статус входа.У меня есть много компонентов, где я хочу проверить статус аутентификации сразу после входа в систему.

Другими словами, когда обновление магазина позволяет мне автоматически получать обновленное значение во многих компонентах.

my store.js похож на ниже

import { EventEmitter } from 'events';
import setAuthorizationToken from './setAuthorizationToken';
import axios from 'axios';
import history from './../Components/history';

class DataStore extends EventEmitter {
    triggerError = ( title, message) => this.emit('ERROR', {title, message});
    triggerResonse = ( funcName, data) => this.emit(funcName, { ...data });

    data = {}
    saveUserData = (userData) => { this.data.user = userData }
    getUserData = (key) => { return this.data.user[key] }

    requestLogin = async (d) => {
        var payload = {
            email: d.email,
            password: d.password,
            remember: false
        };
        var errorMessage = {
            title: 'Login Failed',
            message: 'Please check your Username & Password, before proceeding ahead'
        }

        // var response = await Api.login(payload);
        var response = await axios.post('http://localhost:5000/login', payload);
        console.log(response.data.token);
        const token = response.data.token;
        localStorage.setItem('jwtToken', token);
        setAuthorizationToken(token);

        this.processResponse('LOGIN', response, errorMessage);
    }

    requestSignup = async (d) => {
        var payload = {
            fname: d.fname,
            lname: d.lname,
            email: d.email,
            password: d.password,
            passwordc: d.passwordc,
            remember: false
        };

        console.log(payload);

        var errorMessage = {
            title: 'SignUp Failed',
            message: 'Please check your details, before proceeding ahead'
        }

        // var response = await Api.register(payload);
        var response = await axios.post('http://localhost:5000/register', payload);
        console.log(response);
        this.processResponse('REGISTER', response, errorMessage);
        history.push('/');
    }

    processResponse = (eventName, response, error ) =>
        response.ok ? this.triggerResonse(eventName, response.data) : this.triggerError(error.title, error.message )
}

const dataStore = new DataStore();
window.cd = dataStore;
export default dataStore;
...