2017-07-27 7 views
0

私はReduxエコーシステムの周りに自分の道を見出しています。次の縫合を見つけました:あなたはreduxに接続されるべきReactコンポーネントを持っているとしますこの部分はまだ存在しません(定義されていません)。だから、それを実行するときに私は "不定"エラーを取得します。状態部がまだ存在しないにもかかわらず、何らかの形でセレクタを定義してコンポーネントに接続することは可能ですか?私はセレクタを作成するために選択し直す使用していまだ存在しない状態のreduxセレクタを作成するには

が、これは私がエラーを投げ避けるために使用しました回避策です:

import { createSelector } from 'reselect'; 

const selectLogin = (state) => state 

const loginDataSelector =() => createSelector(
    selectLogin, 
    (authState) => authState.get("auth")? 
    authState.get("auth").get('loginData'):undefined 
); 

export { 
    loginDataSelector 
}; 

このところで、selectLoginセレクタは、全体の状態のツリーを監視しているようです。これを行うには良い方法がありますか、未定義(=未設定)の状態部分を持つセレクタにはベストプラクティスがありますか?

+1

に安全にアクセスすることができますgetInの使用? –

+0

これは、この状態部分に減速機を使用する必要があることを意味します。これは状態部分を読み、それを(このコンポーネントから)書き込む必要がないので、私にはあまりにも多すぎるようです。また、他のコンポーネントにはこの状態部分の減速機があり、まだ呼び出されていません。 関連する質問は、既に存在するコンポーネントを初期化/レンダリング後に状態部分に接続する方法があるかどうかなどです。これにより、「存在しない状態」の問題が回避されます。 –

答えて

1

この問題を回避するには、ES6のデフォルト値を使用できます。

また

ないあなたは、あなたが最初にいくつかのデフォルト値に状態のその部分を設定した場合、どのような深い性質

import { createSelector } from 'reselect'; 
import { Map } from 'immutable'; 

const selectLogin = (state) => state 

const loginDataSelector = createSelector(
    selectLogin, 
    (authState = Map()) => authState.getIn(["auth", "loginData"]) 
); 
関連する問題