как сделать асин c вызов в перехват-ответной ловушке с thunk? - PullRequest
2 голосов
/ 30 января 2020

Я начал изучать крючки. Но я не понимаю, как правильно работать с вызовом asyn c. Ранее я использовал

import * as actionQR from "../actions/qr";
...
function mapDispatchToProps(dispatch) {
    return {
        actionQR: bindActionCreators(actionQR, dispatch),
    }
} 

и после этого вызывал мой this.props.actionQR.myFunc(), но что мне делать с useDispatch ()? если я просто позвоню

import {foo} from "../actions/qr";
...
useDispatch(foo());

, тогда мой foo() не console.log(2)

export const foo = () => {
    console.log(1);
    return (dispatch) => {
        console.log(2);
      }
}

Я использую thunk

import createRootReducer from './reducers/index';
...
const store = createStore(createRootReducer, applyMiddleware(thunk));

1 Ответ

3 голосов
/ 30 января 2020

Хук useDispatch() вернет ссылку на функцию dispatch, вы не передаете ей действие, вы получаете ссылку dispatch и передаете ей (dispatch) действие.

Таким образом, в принципе это должно выглядеть примерно так:

const dispatch = useDispatch()
dispatch(foo())

Более подробную информацию можно получить из реаги-редуктора DOCS

...