Pull to refresh

Comments 10

code
import { Injectable } from '@angular/core';
import { ChatResource } from './_resources/chat.resource';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'
})
export class AppComponent {
  messages = []
  isLoading = false
  isError = false

  constructor(private chatResource: ChatResource) {
    this.chatResource.state.subscribe(state => {
      this.messages  = state.messages
      this.isLoading = state.isLoading
      this.isError   = state.isError
    });
    this.chatResource.connect()
    this.chatResource.getMessages()
  }

  sendMessage() {
    this.chatResource.sendMessage({ text: 'My message' });
  }
}

Я не разработчик, но мне, кажется, тут утечка памяти (this.chatResource.state подписались и не отписались) или я ошибаюсь?

Да, будет утечка. Вообще, для того, чтобы подход работал, нужно привязать жизненный цикл ресурса к компоненту (т.е. ресурс не должен быть синглтоном), тогда мы сможем корректно отписываться и отменять запросы когда они нам больше не нужны.

Upd: в репозитории пример именно такой)

Да, это можно сделать стандартными средствами при дестрое компонента. Есть тудушка - запилить автоматическую отписку (насколько это возможно), но в реальной жизни события использовались не часто, так что и руки пока не доходили

Категорически нерабочее решение. Отписок нет, типизации никакой.

Делайте отписки, добавьте типизацию, кто мешает?

export class UsersResource extends ReactiveResource {
get: HttpMethod<GetUserRequest, User[]> = Get();
}
Статья и так длинная вышла, чтобы там все очевидные вещи описывать

Лично я никогда не использовал ngrx потому что я всегда использовал ngxs (хотя конечно и он не нужен)

Что думаете про MobX? С ангуляром очень неплохо вяжется, нет бойлерплейта, как в NgRx, скорость разработки выше.

Неплохой подход, синтаксически мне нравится, но зачастую выглядит как ненужная прослойка, особенно в Ангуляре. Почему-то кажется, что с развитием сигналов надобность в нем упадет. NgRX, конечно ужасен в своей текущей реализации, не понимаю, как его люди терпят.

В ангуляре и без сторонних стейтменеджеров, довольно все можно сделать.

Sign up to leave a comment.

Articles