Vue と axios を使用してページを更新せずにデータを更新する
P粉614840363
P粉614840363 2023-08-25 19:15:28
0
1
494
<p>Vue と Axios で作成した 2 つのタブ (質問とデータ) を持つページがあります。 最初のタブでフォームに記入して送信します - 保存ボタン <strong>v-on:click="save"</strong>。 </p> <pre class="brush:php;toolbar:false;">save: function() { axios({ メソッド: 'パッチ'、 URL: URL、 データ: this.data }) .then(関数 (応答) { this.data = 応答.data; }</pre> <p>2 番目のタブ (データ) には、保存されたデータのリストがあります。</p> <pre class="brush:php;toolbar:false;">mounted() { アクシオス .get('/api/recommended-products/?patient_uuid=' '{{patient.uuid}}') .then(response => (this.data= response.data.results)) }</pre> <p>これで、[質問] タブの回答を変更すると、[データ] タブのリストが自動的に変更されるはずです。ページを更新すると変更されます - Mounted() は機能します。 <strong>updateList()</strong> 関数を作成してみました: </p> <pre class="brush:php;toolbar:false;">updateList: function() { アクシオス .get('/api/recommended-products/?patient_uuid=' '{{patient.uuid}}') .then(response => (this.data= response.data.results)) }</pre> <p>それを <strong>save()</strong> 関数に追加します。例: </p> <pre class="brush:php;toolbar:false;">save: function() { axios({ メソッド: 'パッチ'、 URL: URL、 データ: this.data }) .then(関数 (応答) { this.data = 応答.data; this.updateList(); }</pre> <p>問題は、この方法が 2 回目でも機能することです (機能する場合もあれば、機能しない場合もあります)。そこで、<strong>location.reload();</strong> を <strong>save()</strong> に追加しましたが、このアプローチは好きではありません。ページを更新せずにデータリストを更新することはできますか? <strong>updateList()</strong> 関数の何が間違っているのでしょうか? </p>
P粉614840363
P粉614840363

全員に返信(1)
P粉949267121

私の意見では、vuex とそのゲッターを使用する必要があります。

この方法では、すべてのアプリケーションにわたってリクエストが 1 つだけになり、ステータスが更新されるとデータが自動的に更新されます。

その後、 計算された プロパティを使用してデータにアクセスできます。このプロパティは、状態が更新されると自動的に再レン​​ダリングされます。


以下は複数のタブの使用例です: https://codesandbox.io/s/vuex-axios-demo-forked-m0cqe4?file=/src/App.vue

この例では、JsonPlaceHolder API を介して投稿情報を読み込みます。

毎回フォームを再送信します (関数を使用)。ストア操作を呼び出して状態を更新すると、ゲッターによるデータの再レンダリングがトリガーされます。

注: 最初の投稿をデフォルト値 1 で Mounted にロードしました。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!