Как создать свой middleware для работы async запроса и redux?

165
06 апреля 2022, 19:20

Помогите понять в чём проблема, когда я пишу mapDispatchToProps так:

const mapDispatchToProps = (dispatch: any) => {
    return {
        getPostByIdAction: (post: any) => dispatch({type: GET_ID, payload: post})
    }
};

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

const mapDispatchToProps = (dispatch: any) => {
    return {
        getPostByIdAction: (post: any) => dispatch(getPostById(post))
    }
};

я получаю Error: Actions must be plain objects. Use custom middleware for async actions. Что могло пойти не так?

мои actions:

export const getPostById = async (id: any) => {
    const myResponse = await fetch(`https://jsonplaceholder.typicode.com/posts/${id}`);
    const myJson = await myResponse.json();
    const post = myJson.body
}

мой reducer:

import {combineReducers} from 'redux'
import {pageReducer} from './page'

export const rootReducer = combineReducers({
  page: pageReducer
})
import {GET_ID} from '../actions/PageActions'
const initialState = {
    post: "Click on article to read it"
}
export function pageReducer(state = initialState, action: any) {
    switch (action.type) {
        case GET_ID:
            return {...state, post: action.payload};
        default:
            return state
    }
}
READ ALSO
Отправка в начало страницы при перезагрузки

Отправка в начало страницы при перезагрузки

Нужно добавить скрипт в React приложение, что бы при перезагрузки страницы откидывало в начало страницыТак в приложении фиксится много багов...

93
Как релизовать каскадное удаление в данном случае?

Как релизовать каскадное удаление в данном случае?

Нужно реализовать возможность системы подписок с помощью ef core 31

184
на C# написать сервер (win/lin) + клиенты (win/lin) ...глупая идея?

на C# написать сервер (win/lin) + клиенты (win/lin) ...глупая идея?

Нахожусь в начале пути освоения C#Пока весьма мутно представляю его возможности в полной мере

173