Раньше я сохранял состояние открытия / закрытия некоторых всплывающих окон в своем собственном локальном состоянии.Затем я переместил его в редукс, чтобы иметь возможность управлять многими поповерами.И это работает.
Но мне нужно было сохранить положение «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 в локальном состоянии.Мне нужно только контролировать открытое / закрытое состояние с помощью приставки.Тем не менее, мне интересно, в чем проблема.