2017-12-03 8 views
0

私はreduxと反応ライフサイクルメソッドのより良い理解を得ようとしています。ジオロケーションからReact-Redux

私はコンポーネント上にpropx関数を持っています。これはreduxで関数を呼び出します。 redux上で私は位置を取得し、初期状態を設定し、呼び出しが行われたときに更新するために場所を呼び出す。私はポジションを獲得することができますが、私がレビュックスを通して何を試しても、私のコーズ(初期状態)はまだ未定義です。私はcomponentDidMount関数で.then()を試して、ローカルに状態を設定しました。これはうまくいきました。しかし、私はそれをよりよく理解しようとするためにreduxでこの機能を使用したいと考えています。私の理解は、初期状態がある限り、それを更新する際に問題はないはずです。しかし、私の問題は私のaction.payloadのどこかにあるかもしれないと感じます。 GET_LOCATIONのスイッチケースには何も記録していません。注記の1つは、私のコンソールで黄色の警告が表示されます。 '[違反]ユーザーのジェスチャーに応答してジオロケーション情報のみを要求してください。これが何かに影響を与えるかどうかはわかりません。とにかく、どんな提案も大いに評価されるでしょう。私はreduxを通してジオロケーションへの素晴らしい解決策を探し求めました。

const initialState = { 
    coords: { } 
}; 


export function getLocation() { 
    const geolocation = navigator.geolocation; 
      return { 
      type: GET_LOCATION, 
      payload: geolocation.getCurrentPosition((position) => { 
       console.log(position.coords) 
       return position 
      }) 
     } 

}; 

switch文:ここでは、コードです

case GET_LOCATION: 
    console.log(GET_LOCATION) 
     return Object.assign({}, 
      state, 
      { 
       coords: action.payload 
      } 
     ) 
+0

理解するコードがさらに必要です。最小の実行スニペットを追加することができます – stack26

答えて

2

geolocation.getCurrentPositionが非同期であるため、ペイロードに入れるには何も返さないです。

非同期でディスパッチするには、redux-thunkを使用する必要があります。あなたがそれを一度も使用していない場合は指示に従って、あなたはこのようにあなたのアクションクリエイターを変更することができるはずです:

関連する問題