Gunakan Vue dan axios untuk mengemas kini data tanpa memuat semula halaman
P粉614840363
2023-08-25 19:15:28
<p>Saya mempunyai halaman dengan 2 tab (Soalan dan Data) dibuat pada Vue dan Axios.
Dalam tab pertama saya mengisi borang dan menyerahkan - butang simpan <strong>v-on:click="save"</strong>. </p>
<pre class="brush:php;toolbar:false;">save: function() {
aksios({
kaedah: 'tampalan',
url: url,
data: ini.data
})
.then(fungsi (tindak balas) {
ini.data = respon.data;
}</pre>
<p>Dalam tab kedua (Data) saya mempunyai senarai data yang disimpan: </p>
<pre class="brush:php;toolbar:false;">mounted() {
aksios
.get('/api/recommended-products/?patient_uuid=' + '{{patient.uuid}}')
.then(respon => (this.data= response.data.results))
}</pre>
<p>Sekarang apabila saya menukar jawapan dalam tab Soalan, senarai dalam tab Data akan berubah secara automatik. Jika saya memuat semula halaman ia berubah - Mounted() berfungsi.
Saya cuba mencipta fungsi <strong>updateList()</strong>
<pre class="brush:php;toolbar:false;">updateList: function() {
aksios
.get('/api/recommended-products/?patient_uuid=' + '{{patient.uuid}}')
.then(respon => (this.data= response.data.results))
}</pre>
<p>dan tambahkannya pada fungsi <strong>save()</strong>
<pre class="brush:php;toolbar:false;">save: function() {
aksios({
kaedah: 'tampalan',
url: url,
data: ini.data
})
.then(fungsi (tindak balas) {
ini.data = respon.data;
this.updateList();
}</pre>
<p>Masalahnya ialah cara ini berfungsi untuk kali kedua (kadangkala ia berkesan dan kadangkala tidak). Jadi saya hanya menambah <strong>location.reload();</strong> kepada <strong>save()</strong> Adakah mungkin untuk mengemas kini senarai data tanpa memuat semula halaman? Apa yang saya buat salah dengan fungsi <strong>updateList()</strong> </p>
Pada pendapat saya, anda harus menggunakan vuex dan pengambilnya.
Dengan cara ini, anda hanya mempunyai satu permintaan di semua aplikasi anda dan data dimuat semula secara automatik setelah status dikemas kini.
Anda kemudian boleh mengakses data menggunakan
计算
property yang akan dipaparkan semula secara automatik apabila keadaan dikemas kini.Berikut ialah contoh penggunaan berbilang tab: https://codesandbox.io/s/vuex-axios-demo-forked-m0cqe4?file=/src/App.vue
Dalam contoh ini, saya memuatkan maklumat siaran melalui API JsonPlaceHolder.
Hantar semula borang setiap masa (menggunakan fungsi). Panggil operasi kedai dan kemudian kemas kini keadaan, sekali gus mencetuskan pengambil untuk memaparkan semula data.
Nota: Saya memuatkan siaran pertama ke Mounted dengan nilai lalai 1.