A页面中的一个子组件 点击按钮跳转到B页面,B页面是在A页面窗口之上新开的窗口。B页面中是一个表单,提交后关闭B页面,同时A页面中要渲染B页面选择的数据。
尝试了以下办法:
使用vuex+vuex-persistedstate,B页面监听vuex中的数据,失败
使用event-bus,监听不到,失败
重写localStorage的setItem方法,window监听,失败
使用postMessage,依旧监听不到,失败
解决办法:使用原生js监听缓存
B页面存储数据
localStorage.setItem('categoryData', JSON.stringify(this.selectedData));
A页面mounted中监听
mounted() {
window.addEventListener('storage', (event) => {
if (event.key === 'categoryData') {
console.log(JSON.parse(event.newValue));
this.subjectData = JSON.parse(event.newValue);
}
});
},