Не удается присвоить данные состоянию после извлечения данных из поста? - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь присвоить action.payload пользователю, зарегистрированному в состоянии, но когда я консольный журнал распечатываю loggeduser, он возвращает неопределенное значение.

Это данные action.payload:

{
    id: 1, 
    firstname: "Leanne", 
    lastname: "Gram", 
    password: "123", 
    phone: "9474211442"
}

Тип данных action.payload: объект , если я изменю его на строку, вывод останется прежним.

Это выход консоли.log (this.state.loggeduser):

{}

handleSubmit = (dispatch, e) => {
    const firstname = this.state.Firstname;
    const password = this.state.password;
    const datas = {
        firstname, password                  //
    }

    alert(this.state.Firstname)
    e.preventDefault();
    axios.post('http://localhost:3001/login', datas).then(response => dispatch({
            type: 'ADD_DETAILS',
            payload: (response.data[0])
        })
    )
}

import React, {Component} from 'react'
import axios from 'axios'

const Context = React.createContext();
const reducer = (state, action) => {
    console.log("From switch")
    console.log(action.payload)
    switch (action.type) {
        case 'ADD_DETAIL':
            return {
                ...state,
                Loggeduser: [action.payload, ...state.Loggeduser]

            };
        default:
            return state;
    }
}

export class Provider extends Component {
    state = {
        posts: [],
        Loggeduser: [
            {}
        ],
        dispatch: action => this.setState(state => reducer(state, action))
    };

    render() {
        return (
            < Context.Provider
        value = {this.state} >
            {console.log("From main")}
        {
            console.log(this.state.Loggeduser)
        }

        {
            this.props.children
        }
    <
        /Context.Provider>
    )
    }
}

export const Consumer = Context.Consumer;
...