Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden Sie Vue und Axios, um Daten zu aktualisieren, ohne die Seite zu aktualisieren

<p>Ich habe eine Seite mit 2 Registerkarten (Fragen und Daten) auf Vue und Axios erstellt. Im ersten Tab fülle ich das Formular aus und sende es ab – Schaltfläche „Speichern“ <strong>v-on:click="save"</strong>. </p> <pre class="brush:php;toolbar:false;">save: function() { Axios({ Methode: 'Patch', URL: URL, Daten: this.data }) .then(Funktion (Antwort) { this.data = Antwort.data; }</pre> <p>Im zweiten Reiter (Daten) habe ich eine Liste der gespeicherten Daten: </p> <pre class="brush:php;toolbar:false;">montiert() { Axios .get('/api/recommended-products/?patient_uuid=' + '{{patient.uuid}}') .then(response => (this.data= Response.data.results)) }</pre> <p>Wenn ich jetzt die Antwort auf der Registerkarte „Fragen“ ändere, sollte sich die Liste auf der Registerkarte „Daten“ automatisch ändern. Wenn ich die Seite aktualisiere, ändert sie sich – Mounted() funktioniert. Ich habe versucht, die Funktion <strong>updateList()</strong> zu erstellen. <pre class="brush:php;toolbar:false;">updateList: function() { Axios .get('/api/recommended-products/?patient_uuid=' + '{{patient.uuid}}') .then(response => (this.data= Response.data.results)) }</pre> <p>und fügen Sie es der Funktion <strong>save()</strong> hinzu, zum Beispiel: </p> <pre class="brush:php;toolbar:false;">save: function() { Axios({ Methode: 'Patch', URL: URL, Daten: this.data }) .then(Funktion (Antwort) { this.data = Antwort.data; this.updateList(); }</pre> <p>Das Problem ist, dass diese Methode beim zweiten Mal funktioniert (manchmal funktioniert es und manchmal nicht). Also habe ich gerade <strong>location.reload();</strong> zu <strong>save()</strong> hinzugefügt, aber dieser Ansatz gefällt mir nicht. Ist es möglich, die Datenliste zu aktualisieren, ohne die Seite zu aktualisieren? Was mache ich falsch mit der Funktion <strong>updateList()</strong> </p>
P粉614840363P粉614840363445 Tage vor532

Antworte allen(1)Ich werde antworten

  • P粉949267121

    P粉9492671212023-08-26 11:52:00

    在我看来,你应该使用 vuex 及其 getter。

    这样,您在所有应用程序中就只有一个请求,并且一旦状态更新,数据就会自动刷新。

    然后,您可以使用计算属性访问数据,该属性将在状态更新时自动重新渲染。


    以下是使用多个选项卡的示例: https://codesandbox.io/s/vuex-axios-demo-forked-m0cqe4?file=/src/App.vue

    在此示例中,我通过 JsonPlaceHolder API 加载帖子信息。

    每次重新发送表单(使用函数)。调用 store 的操作,然后更新状态,从而触发 getter 重新渲染数据。

    注意:我将第一篇文章加载到 Mounted 中,默认值为 1。

    Antwort
    0
  • StornierenAntwort