1.问题描述:跳转页面后,只有点击重新加载后才会显示内容
经过测试后:
/ 跳转详情 const goToDetail = (bookId) => { router.push({ path: '/classic-detail', query: { book_id: bookId } }) } 执行完以上代码后,页面从classicsView跳转到了ClassicDetail,但是ClassicDetail的onMounted函数中打印的qastore却仍然是上一个页面中的store内容
2.解决思路
可能原因:
-
Store 状态未重置
Pinia store 默认是单例的,当从 classicsView 跳转到 ClassicDetail 时,store 仍保留之前的状态数据。此时立即打印会显示旧数据,直到新请求完成。
-
异步时序问题
onMounted
中直接打印时,数据请求可能尚未完成,此时看到的是 store 的初始状态。 -
路由参数处理不严谨
获取路由参数时可能出现类型错误,如
route.query.book_id
返回数组类型时未正确处理
最后修改措施:
由于两个store文件存在命名冲突(都使用了'classic'名称),导致加载store对象时无法分清到底加载哪一个,认为前一个和当前是相同的,因此没能成功加载新的qastore导致的问题,经修改,将ClassicDetail文件中的classic改为qaclass解决了问题