2

RC5 で ngrx を使用しようとしていますが、有線の動作が発生しています。状態の変化は ngrx ログ モニターによって適切にキャプチャされますが、サブスクライバーには送信されません。

しかし、ページを変更すると (@angular/router 3 を使用しています)、すべての状態変更がサブスクライバーに 1 つずつ発行されます。

これがコードのサンプルです

    ngOnInit() {
      this._store.dispatch(this._mediaActions.load());
      this._positionListener = this._store
        .let(getMediaFolderContent())
        .subscribe(a => this.position = a);

      this._store.let(getMediaFolderContent()).subscribe(a => console.log(a));
      this._store.select(s => s.media).subscribe(a => console.log('just a test: ', a));
    }

最初にページに移動したときに最新の状態を取得しますが、その後の変更は取得されません。次に、ページに移動してページに戻ると、状態が変化します。

これは有効な質問には十分なコードではないことはわかっていますが、あまりにも多くのコードがあり、どこからすべてのコピーを開始すればよいかわかりません。誰かが RC5 で同様の問題に対処したことを願っています。

RC5 に移行する前は、すべてのコードが機能していました。

4

1 に答える 1

1

私はそれを解決することができました。これが誰かに役立つことを願っています。

したがって、問題は私のレデューサーにありました。私がすることは次のとおりです。

return Object.assign(state, {something: 'something'}

しかし、新しいオブジェクトを作成した場合にのみ、状態の変化が発生することがわかりました。だから私がしなければならなかったのは、割り当てを次のように変更することでした:

return Object.assign({}, state, {something: 'something'}

正しい方向に向けてくれた@wiredprogrammerに感謝します。

于 2016-08-15T13:26:46.903 に答える