Разрушение вложенного объекта с помощью редукса и реакции - PullRequest
0 голосов
/ 15 февраля 2020

Я следую учебному пособию в React Redux. Я создал переменную store с хранилищем Redux, в которой есть две вложенные переменные. Одним из них является expenses, который является массивом объектов, а другим является filters, который является самим объектом.

const store = createStore(
    combineReducers({
        expenses: expensesReducer,
        filters: filtersReducer
    })
);

При заполнении фиктивных значений хранилище будет выглядеть так:

const dummyState = {
    expenses: [{
        id: '10-AC-191',
        title: 'January Rent',
        note: 'This was the final payment for that address',
        amount: 545.00,
        createdAt: 0
    }, {
        id: '10-AK-155',
        title: 'Breakfast',
        amount: 545.00,
        createdAt: 2000
    }],
    filters: {
        text: 'rent',
        sortBy: 'amount',
        startDate: 700,
        endDate: 360,
    }
};

В настоящее время я пишу функцию для отображения массива результирующих расходов, который выглядит следующим образом.

const getVisibleExpenses = (expenses, {text, sortBy, startDate, endDate}) => {
    return expenses.filter(({title, note, createdAt}) => {
        const startDateMatch = typeof startDate !== 'number' || createdAt >= startDate;
        const endDateMatch = typeof endDate !== 'number' || createdAt <= endDate;

        const searchText = text.trim().toLowerCase();
        const textMatch = typeof text !== 'string' || title.toLowerCase().includes(searchText)
            || note.toLowerCase().includes(searchText);

        return startDateMatch && endDateMatch && textMatch;
    }).sort((expense_a, expense_b) => {
        if (sortBy === 'amount') return expense_a.amount - expense_b.amount;
        else if (sortBy === 'date') return expense_a.createdAt - expense_b.createdAt;
    });
};

Эта функция принимает store.expenses, store.filters в качестве двух входов. Поэтому я хотел передать только объект store и получить вывод.

Поэтому я попытался деструктурировать саму структуру хранилища ввода вместо вызова хранилища ниже. Но это возвращает ошибку.

const getVisibleExpenses = ({expenses, {text, sortBy, startDate, endDate}})

Есть ли какие-нибудь возможные решения?

1 Ответ

0 голосов
/ 19 февраля 2020

Попробуйте это:

const getVisibleExpenses = ({expenses, filters: {text, sortBy, startDate, endDate}}) => {}
...