Редуктор всегда возвращает исходное состояние - PullRequest
0 голосов
/ 05 октября 2018

Я играю с response-native и redux и обнаружил ошибку.Состояние всегда инициализируется как начальное, хотя полезная нагрузка присутствует, когда я отлаживаю его внутри редуктора.

Это мой файл редуктора

let initialState = {
filterList: [],
isFetching: false,
activeFilters: [],
}


export function fetchFilterList(state = initialState, action) {
    return { ...state, isFetching: true };
}

export function fetchFilterListSuccess(state, action) {
    return {
        ...state,
        filterList: action.payload,
        isFetching: true,
        dsad: "dada",
    }
}

export function fetchFilterListError(state, action) {
    return { ...state, isFetching: false };

}

Здесь я объединяю их в одинфункция (в том же файле, что и выше):

export function combinedFiltersReducers(state = initialState, action) {
switch (action.type) {
    case ACTION_TYPES.FETCH_FILTER_LIST:
        return fetchFilterList(state, action);

    case ACTION_TYPES.FETCH_FILTER_LIST_SUCCESS:
        return fetchFilterListSuccess(state, action);

    case ACTION_TYPES.TOGGLE_FILTER_ITEM:
        return toggleFilterItemStart(state, action);

    case ACTION_TYPES.TOGGLE_FILTER_ITEM_SUCCESS:
        return toggleFilterItemSuccess(state, action);

    default:
        return state;
}

}

Это моя функция редукторов комбайна в отдельном файле, называемом главными редукторами.

    export default combineReducers({
    adList: fetchAdListSuccess,
    filterList: combinedFiltersReducers,
});

Здесьэто то место, где я получаю состояние в компоненте, и оно всегда падает до исходного состояния.

    const mapStateToProps = state => ({
    filterList: state.filterList,
});

const mapPropsToDispatch = dispatch => ({
    fetchFilterList:() => dispatch(fetchFilterList()),
    toggleFilterItem: (data) => dispatch(toggleFilterItem(data)),
});

export default connect(
    mapStateToProps,
    mapPropsToDispatch
)(FilterComponent);

Я не могу найти ошибку, поэтому мне нужно немного помочь.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я предполагаю, что ваши ACTION_TYPES не имеют соответствующих типов для функции, которую вы вызываете, поэтому она возвращается к регистру по умолчанию.

0 голосов
/ 05 октября 2018

Хорошо, я нашел проблему.Возьмем пример:

return fetchFilterList(state, action);

Вы вызываете метод fetchFilterList и передаете исходное состояние.Поэтому каждый раз, когда вы звоните, он фактически переходит в исходное состояние.И этот метод просто копирует исходное состояние.Скорее делайте так:

return fetchFilterList(...state, action);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...