Что не так с моим блоком Redux? Он вызывается нормально, но по какой-то причине я не могу получить

#reactjs #redux-thunk

#reactjs #redux-thunk

Вопрос:

Я новичок в этом и прочитал много руководств и документов о компонентах Redux Thunk и более высокого порядка. Я пытаюсь соединить это вместе, но я не могу понять, что здесь не так.

Это изображение показывает, что происходит: моя внутренняя функция Thunk save() по какой-то причине не вызывается.

введите описание изображения здесь

Это работает, если я меняю return withFirebase(save); на return save; , но мне нужен контекст Firebase, так как я могу это решить и почему react-thunk заботится о withFirebase ?

Это действие:

 import { userActionTypes } from './user.types';
import { withFirebase } from '../../firebase';
import * as ROLES from '../../constants/roles';

const saveUserStart = () => ({
    type: userActionTypes.SAVE_USER_START,
});

const saveUserSuccess = user => ({
    type: userActionTypes.SAVE_USER_SUCCESS,
    payload: user,
});

const saveUserFailure = errMsg => ({
    type: userActionTypes.SAVE_USER_FAILURE,
    payload: errMsg,
});

function saveUser() {
    return dispatch => {
        function save({ firebase }) {
            const userRef = firebase.userDoc(firebase.auth.currentUser.uid);
            dispatch(saveUserStart());
            firebase.db
                .runTransaction(transaction => {
                    // This code may get re-run multiple times if there are conflicts.
                    return transaction.get(userRef).then(doc => {
                        if (!doc.exists) {
                            return Promise.reject('Transaction failed: User dont exist!');
                        }
                        const newRoles = doc.data().roles;
                        // new roll
                        newRoles.push(ROLES.USER);
                        // remove roll
                        newRoles.splice(newRoles.indexOf('ANONYMOUS'), 1);
                        // save it back
                        transaction.update(userRef, { roles: newRoles });
                        return newRoles;
                    });
                })
                .then(newRoles => {
                    dispatch(saveUserSuccess(firebase.auth.currentUser));
                    console.log(`Transaction successfully committed role(s): ${newRoles}`);
                })
                .catch(error => {
                    dispatch(saveUserFailure(error));
                    console.log(`Transaction failed committed role(s): ${error}`);
                });
        }

        return withFirebase(save);
    };
}

export default saveUser;