1.鼠标悬停并显示不同的背景图片。代码如下:
效果如图,页面的初始效果:
鼠标暂停后的效果:
2.在for循环中发送axios时遇到的问题背景:
在语音业务项目中,需求变化后,出现了一个:教师发布课程时,要求一门课程同时发送到多个班级。
当前接口:一次只能发送一个类id,也就是说,只能在ClassSid字段中传递一个类id。因此,为了满足这一新要求,需要将select修改为multi-select,使用for loop循环用户选择的类数组,并使用axios发送课程创建请求。更改后的界面如下图所示:
问题重复出现:
思考:使用for循环,发送axios,发现请求发送的数据中的classesId总是最后一个,我立即想到了闭包,认为这是一个闭包问题,所以我使用了它
这种方法试图解决较低的闭包,重新发送axios请求,发现classesId数据仍然是错误的。然后我怀疑自己,认为我写的结尾有问题.
所以使用了第三方lodash的foreach方法,将axios请求写入forEach,重新运行后发现不对。
我认为这一点有问题,我重新分配了这个。结果是一样的。
所以我再次调整了代码:重新打包axios请求,并在for循环中再次调用它。结果还是错的
断点发现for循环中的ClasssID数据是正确的,但是对于axios请求,每个请求发送的ClasssID只是最后一个。
想着是不是axios的异步请求,我把axios改成了同步请求。结果还是一样。这时,整个人都有点不好了。
看到我要下班了,这个问题一个下午都没有解决,我很着急。
试着回忆一下,我曾经要求过这个,但是当时没有错。考虑简化请求的数据,我将发送的数据简化为只有classesId。只考虑一个数据,没有定义任何变量,直接将数据写入axios请求。运行发现:结果证明classesId是正确的。于是我立即把其他数据写到axios请求中,发现结果是对的。天啊,我终于看到希望了。
问题原因:
通过比较这两种数据的定义和发送方式,可以看出问题可能是由js赋值的深拷贝和浅拷贝引起的。
其他的
在求解过程中,我也尝试监控for循环类sid的变化,发现只能监控并获取最后一个类sid。手表解决不了这个问题