老师你好,这节课的代码打完后,我没有发布成功,来向您求助
来源:9-8 大功告成 创建文章最后流程
qq_我在时光机里找回忆
2021-01-22
上周日学完了这一节,我也把上传组件的代码写完并加到createPost.vue里了。但是点击“创建”按钮的时候没有反应。我顿时非常沮丧,直到现在也没有继续学习。
我观察了这节课涉及到的几个文件的代码,没看出有什么明显不妥的地方。于是我再次运行,观察问题的现象,并且提出了自己的假设,沿途加上一些console.log语句,根据输出的结果跟踪一下代码的执行过程。
我总共发现了两个问题:
①ValidateForm组件验证结果永远是true,即使我什么都没填,并且设置好了验证条件。我认为验证规则很清楚,验证结果不可能有错,所以结果为true应该是根本没有验证。然后我在ValidateForm组件中输出“验证函数数组”的长度,结果果然是0。因为这个数组是在监听到ValidateInput组件在onMounted的时候触发的自定义事件得到的,我在这个监听自定义事件的回调函数输出提示,结果并没有看到输出。我输出了emitter,发现是一个正常的对象。不知道是emitter没有发出事件,还是不能监听到其他组件的事件我之所以现在才发现,是因为之前刚做好的时候,我测试过,效果正常,不知道怎么最近突然这样了
②点击“创建”按钮,最终并没有发起post请求。我在自定义提交事件的回调函数里输出提示,发现有输出,说明自定义提交事件发生了,并且确实有执行回调函数。然后我让它输出column,结果是undefined。因为下面有一个判断,确定column存在才会往下走,所以这个函数执行到这里就就不再继续了。因为column来自store中的user,我怀疑user数据不正常,让它输出user,结果显示,user中有nickName,email, _id,isLogin属性,就是没有column。又因为user的数据来自fetchCurrentUser,我就到这个mutation中把拿到的结果输出来看,还是一样,得到的数据里面没有column属性。然后我到swagger里去测试了一下,结果跟我项目里拿到的数据不一样,swagger拿到的数据是有column的。
我把我至今为止的代码进度上传到了码云,地址是:https://gitee.com/betty_nangong/zheye_demo.git
我代码里面有详细的注释,还保留着我刚才说的那些console.log语句,如果老师有空的话,希望能帮我调试看看,这两个问题让我很头疼。非常感谢老师!
1回答
-
同学你好 看了你的源代码 觉得你学习的非常认真 注释写的非常漂亮 给你点个赞
第一个问题:帮你追踪了一下 其实就是你将 emitter.on 和 emitter.emit 放到了 onMounted 钩子函数中的结果,删除就可以了,因为这个钩子函数,子组件是先执行,父组件后执行,所以子组件 emit 事件的时候 父组件的监听这时候还没有,所以你的 callback 数组一直都是空的。
第二个问题,这应该是一个后端的问题,我发现偶尔有同学新建用户的时候没有 column,我今天将后端的索引清除了一下,自己试了试,现在应该没问题的,我建议你重新新建一个用户,或者使用测试账户 test@111.com 密码 111111
012021-01-24
相似问题
回答 2
回答 1