想要完成的效果是: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(空,啥的都没有),而是一个[] 空数组,在后端做判断的时候要注意。