特殊情况下使用sessionStorage来做组件页面传参
最近遇到一个问题,好比第一个是搜索页面,进行搜索后,点击搜索结果来跳转到另外一个页面,此时第二个打开的页面需要搜索结果中的某个参数,一般情况下,使用vuex即可很方便的进行两个无明显关联页面的传参,但是这个项目使用了iframe,无法这样进行传参,然后想到了url后面携带参数,在route路由里面设置props为true,即可拿到这个参数,但是新的问题是,原来的搜索页面没有关闭,第二个打开的页面也没有关闭,在搜索页继续换其他结果进行点击,此时url路径上面的参数虽然改变了,但是watch是监听不到变化的,这时,了解到了sessionStorage是有个监听里面参数变化的方法的,可以利用这个方法,来进行参数变化重新调用相关方法。
第一步,设置sessionStorage
在第一个搜索列表页面设置一个cardId
window.sessionStorage.setItem('cardId', cardId);
第二步,在跳转的详情页添加 storage 方法
在第二个进行跳转的搜索结果详情页面里面添加storage方法,用法如下:
created() {
// 监听session里面 cardId 改变事件
window.addEventListener('storage', item => {
if (item.key == 'cardId'