💡
原文中文,约5700字,阅读约需14分钟。
📝
内容提要
Waline评论系统存在一个bug,即回复评论后,评论内容不会自动清空。经过分析发现,评论内容保存在localStorage中。通过查找代码,发现问题出在watch函数中,当提交评论后,editor.value被清空,但watch函数触发时,取到的是旧值。问题可能是由于submitComment是异步函数,导致editor.value=''没有及时更新。进一步调试发现,watch函数被onMounted触发,当顶部的CommentBox.vue组件重新渲染时,watch函数会被触发,此时取到的是旧值。问题可能是useEditor()函数内部有异步操作,导致localStorage没有立即更新。解决方法是使用localStorage.setItem('WALINE_COMMENT_BOX_EDITOR', '')或await nextTick()等待DOM更新完成。