微前端子应用间共享状态时,状态更新不同步怎么办?
我在用qiankun做微前端时,主应用和子应用通过window全局变量共享用户登录状态。但发现子应用修改状态后,其他子应用没及时更新,有时候刷新页面数据就丢失了。
比如主应用这样设置状态:
window.__GLOBAL_STATE__.user = {name: 'Alice', auth: true};
parent.postMessage({type: 'STATE_UPDATE'}, '*');
子应用用事件监听获取:
window.addEventListener('message', (e) => {
if(e.data.type === 'STATE_UPDATE') {
console.log('收到状态更新:', e.data.payload) // 这里经常拿不到最新数据
}
});
试过用localStorage做中间层,但频繁读写影响性能,而且子应用加载时初始化状态总是有延迟,有没有更可靠的共享方案?
记得在每个子应用加载时主动拉取一次最新状态,避免初始化延迟问题。