実現したいこと
- 非同期処理内でStateに値を即時反映させたい。
前提
現在地情報を非同期で取得してStateに反映したいのですが、即時反映されません。
以下のソースコードのconsole.logで新しい値に変わっているのが望ましいのですが、この時点ではまだStateが更新されないようです。
どのようにすればここのconsole.logの時点で値を反映させることができるでしょうか。
値は連想配列です。
JavaScript
1 navigator.geolocation.getCurrentPosition( 2 (position) => { 3 4 const data: currentPosition = { 5 lat: position.coords.latitude, 6 lng: position.coords.longitude, 7 }; 8 // state更新 9 setCurrentPosition(data); 10 //更新した値をログに出したいが、setCurrentPositionした値が反映されない 11 console.log(currentPosition.lat); 12 console.log(currentPosition.lng); 13 resolve(); 14 }, 15... 16 }
なぜそうしたいのか
現在地を取得→現在地情報を元にAPIでデータを取得したいためです。
現在地情報をstateで管理すると、APIが走る時に最新の現在地情報が反映されていないことに気がつきました。
そのため即時反映(console.logの位置で反映)されていれば、後続の処理で問題なく現在地情報を使えると思いました。
回答2件
あなたの回答
tips
プレビュー