0

React Native の Native Modules を使用して Google フィット データを取得しています。
ロジックは正常に機能し、期待どおりの結果が得られます。
問題は、取得の遅延にあります。
アプリのボタンをクリックすると、以下に示すように Native Module メソッドが呼び出されます

js ファイル:

click = async() => {
await NativeModules.MyHealth.getHealthData((err ,result) => {
        let res = JSON.parse(result)
        let unique = _.uniqWith(res?.HealthData, _.isEqual);
        this.setState({hd: [...unique], full: true})
        console.log("HD:", this.state.hd)      //returns empty for first click. second click i get all the values
    });
}

私の ReactModule.java で

 @ReactMethod
    public void getHealthData(Callback cb) {
        try{
            final Activity activity = getCurrentActivity();

            if(activity != null && activity instanceof MainActivity){
                JSONObject obj = ((MainActivity) activity).getHealthValues();  //main method
                cb.invoke(null, String.valueOf(obj));
            }
        }catch (Exception e){
            Log.i("error", "error here!!!!");
            cb.invoke(e.toString(), null);
        }
    }

MainActivity.java

  public JSONObject getHealthValues() {
        readHistoryData();     //runs my Fitness.getHistoryClient query
        return json;
    }

最初のクリックでデータがフロントエンド js ファイルに流れない理由を理解しようとしています。しかし、2回目のクリックでデータを取得します。
誰でもこの動作についての手がかりを持っていますか??

4

0 に答える 0