события уникальными. Т.е. если 2 компонента вызывают одно событие, то лучше сделать 2 события с разными описаниями, которые делают одно и то же. Так будет легче дебажить - понятно откуда пришло событие.
Вопрос в том, что если я использую фасад, то получается нужно писать 2 функции. Как лучше сделать?
получается что да
что значит "событие"? Если речь про экшены, то не надо придумывать лишних сущностей, не важно какой компонент инициирует экшен - он просто должен быть обработан редюссером и соответствующим образом изменено состояние стейта. Если в цепочке событий присутствует работа с внешним источником (бек), то в дело вступит эффект. Тут опять же не надо придумывать лишних сущностей - если возвращаемые данные консистентны, то все экшены получат последний ответ. Если уникальны - экшен должен иметь идентификатор. Что опять же реализовано через добавление к экшену id
а как добавляется к экшену id?
@Injectable() class TodoEffects { loadTodo$ = createEffect(() => this.actions$.pipe( ofType('GET_TODO'), fetch({ id: (todo: GetTodo) => { return todo.id; }, // provides an action run: (todo: GetTodo) => { return this.backend.getTodo(todo.id).map((response) => ({ type: 'LOAD_TODO_SUCCESS', todo: response.todo, })); }, onError: (action: GetTodo, error: any) => { // dispatch an undo action to undo the changes in the client state return null; }, }) ) );
Обсуждают сегодня