2

Firebase を使用して状態を保持しようとしています。現在、正常に動作し、最新の状態を Firebase に適切に保存する「saveState」関数を使用しています。

ここで、Firebase に保存された最新の状態に基づいてステート マシンを初期化できるようにしたいと考えています。以下のコードでは、'loadState' 関数を使用して Xstate に構成オブジェクトを提供しようとしています。現在、正しい状態構成を含む promise を返します。

これが私の「saveState」コードです:

 //This function works fine.
 function saveState(current, id){
        let transactionJSON = serialize(current);
        transactionJSON['createdOn'] = new Date();
        return firebase.saveTransactionState({transactionJSON, transactionId:id});
    }

これは、Firebase から正しい構成情報を含む promise を返す「loadState」関数です。

function loadState(id){
        return firebase.getTransactionState({transactionId:id}).then(function(querySnapshot) {
            return querySnapshot.docs.map(doc => deserialize({...doc.data()})  );
        });
    };

今私の問題は、上記の「loadState」関数で Xstate をロードしようとしています。ここでは、useMachine React フックを使用しようとしています。

const [current, send] = useMachine(transactionMachine,{
        state: () => loadState(id), //Trying to do something like this, but it doesn't seem to work.
        actions:{
            save: () => saveState(current, id),
        },
    });

「TypeError:未定義のプロパティ 'データ'を読み取れません」というエラーが発生します。これは、約束がまだ解決されておらず、未定義の値を読み取ろうとしているために発生していると思われます。

これは可能ですか、それとも私はこれについてすべて間違っていますか?

私はこれらすべてに慣れていないので、ガイダンスをいただければ幸いです。ありがとうございました。

4

1 に答える 1