Состояния повторного использования NGXS (Расширение классов состояний)

Есть вещь под названием «Композиция». https://ngxs.gitbook.io/ngxs/advanced/composition

И я надеялся, что это позволит мне создать многоразовое состояние для всех моих сеток. Нравиться:

@State<GridStateModel<any>>({
  name: 'basegridstate',
  defaults: {
    total: 0,
    rows: []
  }
})
export class BaseGridState {

  @Action(LoadGridRows)
  loadRows({patchState, dispatch, setState}: StateContext<GridStateModel<any>>) {
    patchState({
      total: 2,
    });
  }

}

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

Нравиться

@State<GridStateModel<Product>>({
  name: 'cataloggrid',
  defaults: {
    total: 0,
    rows: []
  }
})
export class CatalogGridState extends BaseGridState {

  @Action(LoadCatalogRows)
  loadCatalogRows({patchState, dispatch, setState}: StateContext<GridStateModel<any>>) {
    patchState({
      total: 3,
    });
    dispatch(new LoadGridRows());
  }

}

Но проблема в диспетчерском вызове LoadGridRows для всех остальных состояний, расширяющих базовый :(

Есть ли способ заставить его работать только с текущим состоянием? Или, может быть, какой-то другой подход к повторному использованию состояний с той же логикой, но с пользовательскими данными?

Вы когда-нибудь догадывались об этом? Это как раз та проблема, которую я пытаюсь решить.

CalvinDale 23.10.2018 20:44

Это невозможно в NGXS. Эта библиотека управления состоянием основана на CQRS, и действия не привязаны к состоянию, что означает, что все действия являются глобальными.

Mateus Carniatto 19.11.2020 13:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
546
0

Другие вопросы по теме