Я боролся с этим последние 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);