. Ralat ini biasanya disebabkan oleh menggunakan kod dalam templat Vue yang tidak memenuhi keperluan untuk ekspresi tetap. Dalam artikel ini, kami akan meneroka punca ralat ini dan cara membetulkannya.
Sebab ralat ini ialah Vue.js memerlukan ungkapan yang digunakan dalam templat mestilah ungkapan tetap. Ungkapan malar ialah ungkapan yang nilainya boleh ditentukan pada masa penyusunan, bukannya pada masa larian. Contohnya, ungkapan berikut adalah semua ungkapan malar:
1 + 1 "hello" + "world" Math.sqrt(4)
Walau bagaimanapun, tiada satu pun daripada ungkapan berikut adalah ungkapan malar:
count + 1 getTotal()
Apabila kami menggunakan kod dalam templat Vue yang tidak memenuhi keperluan ungkapan malar, Vue.js mengeluarkan Amaran petua. Ini adalah untuk mengelakkan tingkah laku yang tidak ditentukan semasa memaparkan templat, kerana hasil ungkapan tidak boleh diramalkan terlebih dahulu.
Seterusnya, kami akan memperkenalkan cara menyelesaikan ralat ini. Berikut ialah beberapa contoh kod yang mungkin salah dan penyelesaiannya yang sepadan:
Contoh ralat: Menggunakan panggilan fungsi sebagai ungkapan<template> <div> {{ getTime() }} </div> </template>
Penyelesaian: Alihkan panggilan fungsi ke dalam sifat yang dikira
<template> <div> {{ time }} </div> </template> <script> export default { computed: { time() { return this.getTime() } }, methods: { getTime() { // 执行相关的操作并返回一个值 } } } </script>
<template> <div> {{ user.name }} </div> </template>
Penyelesaian: Alihkan akses kepada sifat objek ke dalam sifat yang dikira
<template> <div> {{ userName }} </div> </template> <script> export default { computed: { userName() { return this.user.name } }, data() { return { user: { name: 'John Doe' } } } } </script>
<template> <div> <ul> <li v-for="item in getItems()" :key="item.id"> {{ item.title }} </li> </ul> </div> </template>
Penyelesaian Penyelesaian: Alihkan panggilan fungsi ke dalam sifat yang dikira dan gunakan sifat yang dikira untuk mendapatkan senarai yang dilalui
<template> <div> <ul> <li v-for="item in items" :key="item.id"> {{ item.title }} </li> </ul> </div> </template> <script> export default { computed: { items() { return this.getItems() } }, methods: { getItems() { // 执行相关的操作并返回一个数组 } } } </script>
Saya harap artikel ini dapat membantu anda menyelesaikan ralat ekspresi berterusan dalam Vue.js!
Atas ialah kandungan terperinci Cara menangani ralat '[Vue warn]: Ungkapan tetap harus mengandungi'.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!