Задержка при сохранении currentTarget в избыточном состоянии, devtools прекращает обновление - PullRequest
0 голосов
/ 04 октября 2018

Раньше я сохранял состояние открытия / закрытия некоторых всплывающих окон в своем собственном локальном состоянии.Затем я переместил его в редукс, чтобы иметь возможность управлять многими поповерами.И это работает.

Но мне нужно было сохранить положение «anchorEl» (currentTarget) для всплывающих окон.Но когда я пытаюсь добавить currentTarget в редуктор, для появления всплывающего окна требуется некоторое время, и никакие действия не появляются в redux devtools (перестает работать?).Но поповер действительно появляется в правильном положении, поэтому кажется, что редуктор правильно хранит открытие / закрытие и положение, но это занимает слишком много времени (оно улучшается после первого щелчка, но слишком медленно в первый раз).

Поэтому мне интересно, почему происходит задержка, и почему redux devtools перестает работать, и есть ли что-то не так в коде?

Я запускаю действие из компонента view:

handleClickItem(e, termId) { 

        e.stopPropagation();
        e.preventDefault(); 

         this.props.toggleOpenMenuItem(id, e.currentTarget);

Поповер получает открытое / закрытое состояние и позицию из-за редукции:

<Popover 
        open={this.props.openState}
        anchorEl={this.props.anchorEl}

Действие:

export const toggleOpenMenuItem = (id, currentTarget) => {
    return({
        type: TOGGLE_OPEN_MENU_ITEM,
        payload: {id, currentTarget}
    });
};

Редуктор

case TOGGLE_OPEN_MENU_ITEM: 

        var openState = true;
        if(action.payload.id in state.menuItems) {
            openState = !state.menuItems[action.payload.id].open;
        }

        return {
            ...state,
            menuItems: {
                ...state.menuItems,
                [action.payload.id] : {
                    open: openState
                    currentTarget: action.payload.currentTarget
                }
            },
        };

, если консоль регистрирует журналcurrenttarget, он дает [object HTMLLIElement].

Если я не добавлю currentTarget к состоянию в редукторе, поповер все равно открывается медленно, но действие в редукторе появляется (хотя и после другой задержки).Таким образом, кажется, что есть какая-то проблема с отправкой [object HTMLLIElement] с действием?

edit : я понимаю, что, возможно, мог бы хранить anchorEl в локальном состоянии.Мне нужно только контролировать открытое / закрытое состояние с помощью приставки.Тем не менее, мне интересно, в чем проблема.

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