React/Relayアプリケーションには、一部のフィールドを変更するためのフォームがあります。新しい文字が入力に入力されるたびにサーバーの更新を送信したくありません。どのようにリレーを使用してアプリケーションの状態をサポートすることができますか?リレードキュメントのほとんどを読んでいると、基本的にリレーフォームを自分のフォームのローカルステートや他のFluxストアにコピーして、そこで変更してからRelayにコミットする必要があるようです。それは地方の状態を保つだけでは余分な仕事のようです。サーバーにプッシュしないでリレーストアを更新するには
答えて
リレー現在のバージョンは、graphQLとReactの間の接着剤であり、サーバからのデータのみを処理します。
...私が問題を見ることができない
...私は基本的に私のフォームのローカル状態にリレー状態のいずれか をコピーする必要があることに私には思えます。 Reactの仕組みは、フォーム全体または入力ごとに別々にstate
を格納する必要があります。
編集機能(フォームをレンダリングし、ユーザーが入力を入力するためにデータをフェッチする)を追加すると、すべてのリレーデータはフォームレベルでthis.props.RelayFragmentName
として利用できます。
あなたはそれをstate
に割り当てて、円が完成した入力に渡します。 props
から入力を直接入力することもできます(データを入力state
に割り当てずに)state
の形式を入力からの方法で変更することもできます。
ユーザーが変更を加えて確定すると、state
のすべてを再度収集して突然変異を作成するだけです。
すべてのデフォルトが設定されていれば、基本的には破壊されない完全な円です。
リレーはキャッシュを直接、取得、追加または更新する不可欠APIを持っていますが、それは(特にローカル状態のために)比較的汚れやめったに使われないのです。サーバーからクライアントへの更新をプッシュし、キャッシュを手動で更新するWebSocketなどの機能に使用されます。
現在のリレーは、サーバーデータのみで動作するように設計されています。リレー2はローカルキャッシュを持っていますが、まだアウトされていません。
さまざまなことについて話している場合や、コードサンプルを使用できる場合は、教えてください。
お返事ありがとうございます。私は 'RelayFragmentName'の使い方を見てみたいと思いますが、前と同じように話していると思います。私はちょうど私がAPIを使用し、リレーで直接状態を変更したいと思うように思えます。これは、すべてを小道具として渡し、私のコンポーネントをステートレスにすることです。私はちょうど必ずしもすべてのリレー状態の変更がネットワーク要求をもたらすことを望まない。 –
現代のリレーでは、commitLocalUpdate
を使用してリレーを行うことができます。例
onEmailChange = (email) => {
commitLocalUpdate(environment, (proxy) => {
const userProxy = proxy.get(this.props.user.__id);
userProxy.setValue(email, 'email');
});
}
驚くばかり!私はレポの機能を参照してくださいが、それについてのドキュメントはありますか? –
@MatthewHerbstいいえ、私は公式の文書でそれを見つけることができませんでしたが、これはあなたが入力変更時にこれらの変更を別のコンポーネントに反映させたい場合を除き、通常のコンポーネント状態を使用する必要があります... –
- 1. サーバーに照会せずにリレーストアを手動で更新する方法はありますか。
- 2. Graphcoolサインイン後のリレーストアの更新
- 3. 新しいコードを* nix Webサーバーにプッシュする方法は?
- 4. (CI)サーバーにSQLCLR更新をプッシュする方法
- 5. Firebaseプッシュ通知がテキストを同時に更新しない
- 6. いつRESTバックエンドに更新をプッシュするのですか
- 7. Delphi Datasnapサーバーを更新するには?
- 8. IOSデバイスのアプリケーションを更新しないでコードをプッシュ
- 9. サーバーにプッシュする適切な方法
- 10. 更新方法プッシュ通知を有効にしているアプリケーション
- 11. ルートのないブランチを新しいリポジトリにプッシュする
- 12. 新しいブランチをプッシュするときに新しいリモートヘッド
- 13. サーバーにプッシュするとGitがファイルのアクセス権を変更しています
- 14. ビジュアルスタジオがhtml/javascriptをサーバー/ブラウザに更新しない
- 15. 新しいビューをプッシュするとナビゲーションコントローラがnullになる
- 16. プッシュ通知:新しい解析アプリケーションでアプリケーションを更新
- 17. オブジェクトを$ scope配列にプッシュした後にng-repeatが更新されない
- 18. モンゴアレイ更新またはプッシュ
- 19. --set-upstreamなしでリモートサーバ上に存在しない新しいブランチをプッシュするには?
- 20. ファイルの更新をGitHubにプッシュ
- 21. アプリを更新せずにAndroid Appに新しいコードをプッシュする方法は?
- 22. LANの新しいサーバーにリポジトリの起点を変更するには?
- 23. ローカルにGitHubリポジトリをマスターブランチにプッシュする:フォルダをプッシュしない
- 24. サーバー上でFlashアプリケーションが正常に更新されない
- 25. フィールドを選択的に更新する(更新しない)
- 26. WAMPサーバー:ワイヤレスSSIDを変更してサーバーにアクセスできない
- 27. 要素値でasp.netサーバーを更新するには?
- 28. モデルデータを更新する:サーバーまたはクライアントで最初に?
- 29. iOSアプリのAppiconがTestFlightに新しいビルドをプッシュしている間に変更されない
- 30. 履歴なしで新しいブランチをプッシュする方法
あなたがコンポーネントの状態を設定したり、再来のようなローカルストアを使用するかについては
。私が知る限り、あなたが説明している方法でリレーストアをローカルに更新することはできません。最近、同様のシナリオを経て、私は訂正されてうれしいです。個人的には、フォームになると、ローカルの状態を保持するだけでなく、ユーザーがページを更新したり、後で終了して状態になった場合でもローカルストレージを使用して終了するのが便利だと思いますあなたのユースケースはここにあります。 – alexi2