Saya mempunyai titik akhir pendaftaran mudah yang saya mahu membenarkan pengguna mendaftar dalam apl vue saya, saya juga ingin memaparkan ralat yang sesuai kepada klien vue dari bahagian belakang saya.
Struktur JSON ralat kelihatan seperti ini:
{ "errors": { "Password": [ "Password is required", "Minimum length of 8 characters is required" ], "UserName": [ "Username is required", "Minimum length of 6 characters is required" ], "EmailAddress": [ "Email Address is required", "Invalid Email Address" ], "ConfirmPassword": [ "Confirm Password is required" ] } }
Saya mempunyai composable dengan fungsi daftar seperti ini:
export default function useAuth() { let errors = ref({}) const register = (request) => { errors = {} AuthService.register(request) .then(res => { console.log("res: "+ res) }) .catch(err => { const errList = err.response.data.errors; errors = errList // Here i'm getting a reponse console.log(errors) }) } return { register, errors } }
Saya juga mempunyai komponen bentuk yang hanya bentuk ringkas dengan model v ditambah:
<script> // Imports.. export default { components: {}, setup() { const { register, errors} = useAuth(); const request = { userName: "", emailAddress: "", password: "", confirmPassword: "", }; const handleSubmit = () => { register(request); // empty object console.log(errors) }; return { errors, request, handleSubmit }; }, }; </script>
Dalam composable saya, saya boleh log keluar respons ralat seperti ini
Ralat respons
Saya cuba menyahdaftarkan ralat dalam komponen borang tetapi sekarang saya hanya mendapat objek kosong (saya menggunakan reaktif untuk mengendalikan objek ralat ini dalam composable)
Tindak balas objek kosong daripada item boleh gubah
Nampaknya anda memulangkan tatasusunan, bukan objek.
Jadi untuk mendapatkan akses anda perlu lakukan
errors[0].Password
.Adakah anda akan menggunakan objek atau tatasusunan (mungkin berguna jika anda mempunyai berbilang ralat)?
Jika tatasusunan dijangka dan anda perlu menyemak atribut
Password
untuk semua ralat, anda akan melakukan sesuatu seperti ini:Renungkan kod anda
Terdapat banyak ralat di dalamnya, menyukarkan saya untuk memberikan jawapan ringkas yang sesuai dengan keperluan anda. Sebaliknya, saya dengan cepat menyusun coretan kod yang berfungsi mengikut prinsip anda. Melangkah ke hadapan, saya akan cuba menyerlahkan perkara yang perlu diberi perhatian dan memberikan beberapa nasihat yang baik untuk masa hadapan.
- Respons menggunakan
async function()
可以等待Promise
Tidak bagus (pada masa ini
console.log
证明使用async
jika anda ingin menggunakan hasilnya dengan segera)Ini tidak memberikan hasil serta-merta; ia mengambil sedikit masa untuk dijalankan pada benang yang berasingan. Akibatnya, skrip JavaScript bergerak ke hadapan hampir serta-merta. Biasanya ini akan mengakibatkan ralat jika anda ingin menggunakan hasilnya dengan segera kerana respons belum tiba lagi.
Jadi apabila anda cuba mengakses
errors
的新结果时,您会看到它是空的,即使在console.log
之后,1-2 秒后,它不会再为空,因为register()
ia telah pun dilaksanakan.Okay
等待
- Tunggu proses tamat - Dokumentasi MDN异步函数
- 需要什么await
Menggunakan - Dokumentasi MDN- Bagaimana untuk menggunakan
ref()
dengan VueJS?1.
Simpan nilai yang disimpan oleh
ref()
、reactive()
、compulated()
,reactive()
,compulated()
, dsb. dalam pembolehubah yang tidak boleh diubah suai. Sentiasa gunakan const semasa mengisytiharkan pembolehubah ini.Maklumat lanjut - Jawapan StackOverflow
Tak bagus
Okay
2.
Anda menggunakan akhiran
.value
dalam satu kejadian dan bukan dalam yang lain. Nah, apa yang berlaku ialah hasil pembolehubah.value
后缀,而在另一实例中则不使用。嗯,情况是ref()
变量的结果始终存储在.value
sentiasa disimpan dalam.value
. Anda boleh memanipulasinya dengan sewajarnya.Tak bagus
Okay
Bagaimana cara menggunakan
ref()
? - Dokumentasi VueJSContoh kod dengan logik yang digariskan
Saya mengulas baris ini untuk memahami kod dengan lebih baik. Saya harap ini boleh difahami.