Как отправить действие в Redux промежуточного программного обеспечения? - PullRequest
0 голосов
/ 20 марта 2019

Я написал промежуточное программное обеспечение, как удар:

const testMiddleware = ({ dispatch, getState }) => next => action => {
    console.log('test middleware')
};

export default testMiddleware;

и добавил его в мой магазин: applyMiddleware(testMiddleware) в действии, я получаю test middleware в своей консоли.

и я написал простое действие, подобное этому:

export const sayHi = () => {
    return dispatch => {
        console.log('hi');
    }
}

Как я могу отправить sayHi действие в моем промежуточном программном обеспечении?

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Middleware получает функции магазина getState () и dispatch () в качестве первого аргумента, поэтому вы можете сделать следующее (после импорта необходимых действий):

const middleware = ({dispatch, getState }) =>{
    return next => action => {
        dispatch(someAction);
        // return data;
        return next(action);
  }
}

Итак, подпись промежуточного программного обеспечения ({getState, dispatch}) => next => action.

https://redux.js.org/api/applymiddleware

0 голосов
/ 20 марта 2019

Давайте предположим следующее промежуточное ПО:

const middleware = ({ getState }) =>{
    return next => action => {
        console.log('My actions is', action)

        const data = next(action)

        console.log('After update :' + getState())

   return data
  }
}

Хорошо, мы готовы применить его через applyMiddleware, теперь каждый раз, когда мы отправляем действие, оно будет перехватываться только что созданным пользовательским промежуточным ПО.

store.dispatch({
    type: 'MY_ACTION',
    text: 'Will trigger middleware'
})

Действие будет передано промежуточному программному обеспечению в качестве аргумента, промежуточное программное обеспечение выполнит некоторую операцию (в данном случае журнал) и, наконец, отправит действие, используя next()

.
...