Как создать незаписанный селектор в NGRX. Не хочу предыдущие данные - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу переключить меню, первый щелчок расширяет меню, и я получаю следующее состояние, как и ожидалось.

{menuItem = {title: "Dashboard", urlFragment: "dashboard"}   //Toggle menu

Когда я снова нажимаю на меню, подписка вызывается два раза с текущее и предыдущее состояние. Таким образом, он останавливается на отладчике два раза со следующими состояниями. Я уже пробовал метод release () на селекторе. это не сработало.

{menuItem = {title: "Userpage", urlFragment: "Userpage"}  //previous visited menu
{menuItem = {title: "Dashboard", urlFragment: "dashboard"} // My toggle menu

Есть ли способ очистить кеш и не получить предыдущее состояние? Я получаю это, вероятно, потому что мое состояние не меняется.

 this.subscriptions.push(this.store.pipe(select(getSelectedMenuItem)).subscribe(menuItem => {
            if (menuItem) {
                if (menuItem.iconCssClass === 'icons8-settings') {
                    this.showConfigurationMenu = !this.showConfigurationMenu;
                }
                else{
                    this.showConfigurationMenu=false;
                }
                debugger;
            }
       }

это мой селектор

export const getSelectedMenuItem = createSelector(getMenu, (state: MenuState): IMenuItem => {
    if (state === 'loading') {
        return null;
    }
    return state.selectedMenuItem;
});

1 Ответ

0 голосов
/ 28 апреля 2020

Просто используйте функцию, которая получает все состояние.

export const getSelectedMenuItem = (state: YourAppState) => {
  const featureState = getMenu(state);
  if (featureState === 'loading') {
    return null;
  }
  return featureState.selectedMenuItem;
};
...