对redux做出反应,.net中的操作,然后不分派

发布时间:2020-07-07 14:21

我正在尝试将道具获取到我的componentDidUpdate方法中。 遗憾的是,.then块中的第二个动作没有调度。

我有以下内容:

我的AddPerson.js,这是添加“人”的表格。那里我有以下状态:

constructor(props) {
    super(props);
    this.state = {
        loading: false,
        firstName: '',
        secondName: '',
        email: '',
        date: '',
    };
}

整个都连接到redux:

function mapDispatchToProps(dispatch) {
    return {
        addPerson: data => dispatch(addPerson(data))
    };
}

const mapStateToProps = state => {
    return { data: state.data };
};

const Person = connect(
    mapStateToProps,
    mapDispatchToProps
)(AddPerson);

export default Person;

然后我有这样的动作分配器:

export const addPerson = (payload) => {
    return dispatch => {
        dispatch(addTodoStarted());
        axios
            .post(PATH + '/attendant', {
                payload,
            })
            .then(res => {
                dispatch(addTodoSuccess(res));
            })
            .catch(err => {
                dispatch(addTodoFailure(err));
            });
    };

};

const addTodoSuccess = payload => ({
    type: ADD_PERSON,
    data: {
        payload
    }
});

const addTodoStarted = () => ({
    type: ADD_PERSON,
    data:
        "loading"

});

const addTodoFailure = error => ({
    type: ADD_PERSON,
    data: {
        error
    }
});

还有我的减速器:

function reducer(state = {} , action) {
    switch (action.type) {
        case ADD_PERSON:
            return Object.assign({}, state, {
                data: action.data,
            })
        default:
            return state;
    }
}

export default reducer;

当操作中发生抓取操作时,首先是调度类型的操作loading,然后在promise解决后,我要调度.then块中的操作。我想念什么?

编辑:

我的componentDidUpdate看起来像这样:

componentDidUpdate(prevProps) {
    console.log(prevProps)
    if (prevProps.data !== this.state.data) {
        console.log(prevProps.data)
    }
}
回答1