vue 两个不同layout包裹的页面之间 数据通信

前提

a页面打开了一个b页面,两者路由路径不同,且layout也不同。
但b页面有个删除操作,删除后,要在a页面进行刷新

尝试

1.首先使用了通俗的vuex,vuex获取b更改后的状态失败 (两个窗口两个实例,vuex数据不会互通)

2.使用了EventBus的 e m i t − emit - emiton,无效 (无论是创建一个空白vue绑定$emit ,还是直接使用,都失败,依旧是实例不互通,所以失败)

3.从第一点也使用了缓存localstorage,但因为状态树不互通,监听也获取不到,下面是网传很多的版本,
方法:可以重写localStorage的setItem方法,当调用setItem方法设置新值的时候,会new Event(‘setItemEvent’) 用window.dispatchEvent()这个方法来派发一个事件,让window去监听
依旧没有试验成功
vue 两个不同layout包裹的页面之间 数据通信_第1张图片

解法

只能通过监听缓存的数据变化,第3点也是想进行数据变化的监听,没成功,直接用原生js监听缓存
先b页面更改
localStorage.setItem('calling','1')

再a页面监听

 window.addEventListener('storage', event => {
        if(event.key === 'calling' && event.newValue=='1') {
          localStorage.setItem('calling','0')
          that.getPlantList()
        }
      })

你可能感兴趣的:(vue,JS,vue.js,javascript,ecmascript)