最近在使用Vue開發項目時,遇到了一個關于select的報錯,大致錯誤信息為:
Error in v-on handler: "TypeError: Cannot read property 'filter' of null"
經過觀察,發現這個錯誤是在使用v-for渲染select的options時出現的。
由于報錯信息中提到了filter,于是我們推測這個報錯與filter有關。經過進一步查找,我們發現,原來是我們在對數據進行渲染時,使用了filter方法,但此時data中的相關數據還未被初始化,導致出現了null。
export default {
data () {
return {
list: null, // 相關數據未初始化
}
},
methods: {
async getList () {
this.list = await fetchApi() // 異步請求得到數據
},
getOptions () {
return this.list.filter(item =>item) // 對數據進行filter方法處理,導致null報錯
},
},
created () {
this.getList() // 異步請求處理數據
},
}
因此,我們需要在使用filter方法前對數據進行判斷,如果為null則返回一個空數組:
export default {
data () {
return {
list: null, // 相關數據未初始化
}
},
methods: {
async getList () {
this.list = await fetchApi() // 異步請求得到數據
},
getOptions () {
if (!this.list) {
return []
}
return this.list.filter(item =>item) // 對數據進行filter方法處理
},
},
created () {
this.getList() // 異步請求處理數據
},
}
經過以上操作,我們就成功解決了這個關于select的報錯問題。