Отправка действия не устанавливает избыточность с результатом - PullRequest
0 голосов
/ 29 октября 2019

Я боролся с этим последние 18 часов, и я не могу понять, что я делаю неправильно. У меня есть настройка приставки, и она правильно распределяет действия и получает состояние для других компонентов, но в одном компоненте я хочу отправить действие по щелчку, который затем вызывает API и устанавливает состояние приложения в избыточном состоянии с результатами API.

Но он просто ничего не возвращает. Я могу вручную установить полезную нагрузку со строкой, если жестко закодирую ее, чтобы я знал, что действие запускается нормально. Я также проверил, что API работает нормально, и я даже попытался заменить API на фиктивные результаты jsontypicode, чтобы увидеть, если это имеет значение, это не так. Может кто-нибудь, пожалуйста, ПОМОГИТЕ направить меня в правильном направлении ??

Вот мой код.

ДЕЙСТВИЕ:

import axios from 'axios';
import { SET_POSTS } from "./types";

export const setPosts = () => dispatch => {
    axios
        .get(`https://jsonplaceholder.typicode.com/todos/`)
        .then(res =>
            dispatch({
                type: SET_POSTS,
                payload: res.data,
                settingCorrect: true
            })
        )
        .catch(err =>
            dispatch({
                type: SET_POSTS,
                payload: {}
            })
        );
};

РЕДУКТОР:

import { SET_POSTS } from '../actions/types';

const initialState = {
    loading: true,
};

export default function(state = initialState, action){

    const { type, payload } = action;

    switch(type){
        case SET_POSTS:
            return {
                ...state,
                posts: payload,
                loading: false
            }
        default:
            return state;
    }

}

APP:


    selectUnit = (e,unit) => {
            this.props.setPosts();
            this.props.setHistoricalData(unit);
    };

   ....

const mapDispatchToProps = (dispatch) => {
    return {
        setPosts: () => {
            dispatch({
                type: 'SET_POSTS',
            })
        },
        setHistoricalData: (history) => {
            dispatch({
                type: 'GET_HISTORICAL_DATA'
            })
        }
    }
};

export default connect(mapStateToProps,mapDispatchToProps)(Posts);

1 Ответ

0 голосов
/ 29 октября 2019

Кажется, вы просто не используете действие create в mapDispatchToProps. Если я правильно понимаю вашу архитектуру, следующее будет правильным mapDispatchToProps:

const mapDispatchToProps = (dispatch) => {
    return {
        setPosts: () => {
            dispatch(setPosts())
        },
        setHistoricalData: (history) => {
            dispatch(getHistoricalData(history))
        }
    }
};

Не забывая импортировать функции создателя действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...