Redux: Редуктор не изменяет состояние с первой попытки - PullRequest
0 голосов
/ 15 марта 2019

Я работаю над приложением Table in React, используя машинопись.Я реализую функциональность поиска для таблицы.Внутри таблицы может отображаться огромное количество данных, поэтому я выполняю поиск, сортировку и разбивку на страницы.

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

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

Мой код для редуктора ниже.

const dataEnteries: Reducer<any> = (
    state = {},
    { type, detail, pagination }: DataResponse
) => {
    switch (type) {
        case actionTypes.DATA_LOAD_RESPONSE:
            if (!detail) {
                return {};
            }
            const data: any[] = [];
            const tableData: any[] = [];
            detail.forEach((o) => {
                tableData.push(o.dataDetail);
                Data.push(o)
            })
            const resultMap = new Map()
            resultMap["data"] = data;
            resultMap["tableData"] = tableData;
            resultMap["pagination"] = pagination;
            return resultMap;
        default:
            return state;
    }
};

вот мое состояние карты для функции props

const mapStateToProps = ({ data }: { data: DataState }): DataProps => ({
    data: data.dataEnteries
});

dataEnteries - самое внутреннее свойство

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

1 Ответ

0 голосов
/ 15 марта 2019

Вы можете попытаться использовать оператор распространения по возвращении.

return ...resultMap

Когда вы обновляете реквизит внутри объекта, состояние не распознало изменение, тогда не будет вызван рендер для обновления компонента.

Попробуйтеэто, если не работает, дайте мне знать.

Для дальнейших ссылок проверьте это: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

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