2017-03-27 20 views
0

私はReact、Redux、Firebaseを使用するチャットアプリケーションを持っています。また、Thunkmiddlewareを使用してFirebaseで状態の非同期更新を行います。 私は必要なものすべてを手に入れましたが、すべてが前もってハードコードされた変数に依存しています。Reduxを使用した認証状態の処理

私の残りの状態を満たすために必要な状態値を取得するには、どうすれば私のActionCreatorsメソッドをgetState()メソッドで呼び出すことができますか?

私は現在、私の認証:{ uid = 'XXXZZZYYYY' }..を持っています。私はちょうどそのように呼び出す必要があります

getState().auth.uid 

しかし、それはまったく動作しません。

mapDispatchToPropsなどを使用してさまざまな質問を試しました。必要に応じて私のレポを表示できます。

私はこの他の質問に続いて成功することはありませんでした。 Accessing Redux state in an action creator? これは私の関連する現在のコードです:

const store = createStore( 
    rootReducer, 
    defaultState, 
    applyMiddleware(thunkMiddleware)); 

そして

function mapDispatchToProps(dispatch) { 
    watchFirebase(dispatch); // to dispatch async Firebase calls 
    return bindActionCreators(actionCreator, dispatch); 
} 
const App = connect(mapStateToProps, mapDispatchToProps)(AppWrapper); 

他の多くのnot pureの機能が正常に動作するように私が正しくエクスポートしています。例えば が、これは正常に動作します。しかし

export function fillLoggedUser() { 
     return (dispatch, getState) => { 
     dispatch({ 
     type: C.LOGGED_IN, 
     }); 
    } 
    } 

以下示唆したように、これは事行いません:あなたのサンクアクションの作成者は、以下のようになります一般的に

const logState =() => (dispatch, getState) => { 
     console.log(getState()); 
    }; 
+0

あなたがリンクしているSOの答えに示すように、これを行う最も簡単な方法は、redux-thunkを使用することです。もしあなたがすでにそれを試してみたら、あなたの特定の問題を助けるためにいくつかのコードを投稿してください。 –

答えて

0

を(私が持っていますこれはあなたが、私はあなたの状態をログアウトして、単純なサンクで何が起こっているかを見ることになるしているものに類似している場合

const getPost = (postId) => (dispatch, getState) => { 
    const state = getState(); 
    const authToken = state.reducerName.authToken; 
    Api.getPost(postId, authToken) 
    .then(result => { 
     // where postRetrieved returns an action 
     dispatch(postRetrieved(result)); 
    }); 
}; 

:例パラメータとしてポストid)を使用。

const logState =() => (dispatch, getState) => { 
    console.log(getState()); 
}; 
+0

このロギングは、私のactioncreator.jsファイル内に何もしていないようです。なぜか分からない。そして、それが私の主な問題だと思います。 – villancikos

+0

console.logは呼び出されましたが、何も記録されていませんか?それとも決して呼び出されませんか? –

+0

は決して呼び出されません。さらに、別の方法でgetState()を呼び出そうとしたとき、getState()は関数ではありません。 – villancikos

関連する問題