想要完成的效果是:a選項和b選項,至少錄入一個篩選條件。
如果前端沒有加判斷的話,也就是ab選項都沒有選,就會請求接口,后端接口報錯提示“至少錄入一個篩選條件”,這樣屬於不好的做法。應該在前端加一個攔截判斷。
a是月份moth,b是姓名userList(可多選)。
if( ! moth && (!userList)){
message.warn(" moth和名字,至少錄入一個篩選條件")
}
這樣在單選的時無影響可以攔截,因為單選的時userList為undefined的。但是在用戶多選了后,又刪除了剛剛的選項,userList就成了[] 空數組了。這個判斷邏輯就不行
修改后的代碼
if( ! moth && ( !userList || userList.length === 0 )){
message.warn(" moth和名字,至少錄入一個篩選條件")
}
//或者用 .?
if( ! moth && !( userList?.length > 0 )){
message.warn(" moth和名字,至少錄入一個篩選條件")
}
總結下就是:select 去除了多選后,該對象不是undefinded(空,啥的都沒有),而是一個[] 空數組,在后端做判斷的時候要注意。
