2016-08-27 5 views
3

私はngrx/storeとngrx/effectsを使用しています。アクション/エフェクトUI通知後のngrx/store

これは流れで、

  1. ユーザクリックログインボタン
  2. ログインアクションはログイン
  3. 発送LOGIN_SUCCESSまたはLOGIN_FAILUREアクション
ためhttp.post資格情報を実行
  • $影響を派遣

    質問:私はいくつかのUIを実行したいアクションの後にモーダルをプルダウンするか、エラーメッセージのポップアップを表示するなどの質問をします。

    コンポーネントのレスポンスを購読するにはどうすればよいですか?

    ありがとうございます。

  • 答えて

    2

    状態には、アクションを実行する必要があることをコンポーネントに通知するフラグが必要です。このような

    何か:

    州:

    const initialState: SomeState = { 
        loggedIn: false, 
        ... 
    }; 
    
    export default function(state = initialState, action: Action): SomeState { 
        switch (action.type) { 
         case StateActions.LOGIN_SUCCESS: 
          return Object.assign({}, state, {loggedIn: true}); 
          ... 
    

    は、その後、あなたのコンポーネントにあなたが状態に加入してloggedInがtrueの場合、あなたは例えば、モーダルを示すべきであることを知っています。

    もう1つのアプローチは、サービスを通じて自分のエフェクトでタスクの権利を実行することです。

    +0

    答えをありがとう。フォローアップの質問:もしかすると、私はユーザーのプロフィールを更新しています。私はUSER_UPDATEアクションを送信しますが、私は '保存'をグレーアウトし、保存操作が完了すると再び有効にします。 私は「観察する」べきですか? – jho

    +1

    あなたの状態ではデフォルトで 'false'の' loading:boolean'パラメータを作成します。 'USER_UPDATE'アクションはそれをtrueに設定し、更新が完了した後に(効果によって)呼び出される' USER_UPDATE_COMPLETE'アクションを持っていて、 'loading'をfalseに戻します。オプションで、減速機にアクセス機能を作成し、それを聞くことができます。 '(状態$:Observable )=>状態$ .select(s => s.loading)' –

    +0

    助けてくれてありがとう! – jho

    関連する問題