微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

redux-logger突然不显示动作名称,仅显示“对象,对象”

如何解决redux-logger突然不显示动作名称,仅显示“对象,对象”

我学会了反应并尝试使Redux正常工作,所以我使用了Redux-logger。从App.js分派两个动作时,它作为顶部图像显示为“ ALBUME_DATA_LOADED”。

然后我从另一个地方进行调度并获得以下输出

enter image description here

我不确定我是否发送了“对象,对象”操作,我放置了断点和控制台日志,而奇怪的是,react-logger捕获了我认为不是我发送的操作。

有什么主意吗?

以下是我在以下代码中使用的操作类型,如userActionTypes

文件user.types.js:

export const userActionTypes = {
    SAVE_USER_START: 'SAVE_USER_START',SAVE_USER_SUCCESS: 'SAVE_USER_SUCCESS',SAVE_USER_FAILURE: 'SAVE_USER_FAILURE',};

这是动作:

文件user.actions.js;

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,});

const asyncSaveUser = ({ firestore }) => {
    return async dispatch => {
        const userRef = firestore.userDoc(firestore.auth.currentUser.uid);
        dispatch(saveUserStart());
        firestore.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());
                console.log(`Transaction successfully committed role(s): ${newRoles}`);
            })
            .catch(error => {
                dispatch(saveUserFailure(error));
                console.log(error);
            });
    };
};

export default withFirebase(asyncSaveUser);

解决方法

在dispatch saveUserSuccess()中,您不能传递newRoles。

dispatch(saveUserSuccess(newRoles));

,

原因是您的mapDispatchToProps。

const mapDispatchToProps = dispatch => ({
  saveUser: () => dispatch(asyncSaveUser())
}); 

asyncSaveUser()不是动作创建者。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。