qinakun实现全局状态管理

目录

qinakun实现全局状态管理

  • qiankun提供了一个全局的 initGlobalState 来共享数据,基座初始化之后,子应用可以监听到这个数据的变化,也能提交这个数据。

基座 src / index.tsx

js 复制代码
import { start, registerMicroApps, initGlobalState } from 'qiankun'

// root.render(XXX)
// qiankun加载子应用 + 启动 。。。

const state = { count: 1 }
const actions = initGlobalState(state);
// 主项目项目监听和修改
actions.onGlobalStateChange((state, prev) => { // state: 变更后的状态; prev 变更前的状态
  console.log('基座onGlobalStateChange',state, prev);
});
actions.setGlobalState(state);

start() // 3. 启动微服务

子应用 src / index.tsx

  • 在子应用挂载的时候 监听主应用的共享数据
js 复制代码
// 应用每次进入都会调用 mount 方法,通常我们在这里触发应用的渲染方法
export async function mount(props: any) {
  console.log('sub-react', props)
  props.onGlobalStateChange((state, prev) => { // state: 变更后的状态; prev 变更前的状态
    console.log(state, prev);
    // 将这个state存储到我们子应用store
  });
  props.setGlobalState({ count: 2 }); // 修改共享数据
  render(props);
}
相关推荐
哆啦A梦158833 分钟前
20, Springboot3+vue3实现前台轮播图和详情页的设计
javascript·数据库·spring boot·mybatis·vue3
Moment34 分钟前
面试官:如果产品经理给你多个需求,怎么让AI去完成❓❓❓
前端·后端·面试
每天吃饭的羊35 分钟前
JSONP
前端
gogoing41 分钟前
ESLint 配置字段说明
前端·javascript
Lkstar1 小时前
面试官让我手写 Promise.all / Promise.race / Promise.allSettled,我直接水灵灵地写出来了
javascript·面试
gogoing1 小时前
CSS 属性值计算过程(Computed Value)
前端·css
gogoing1 小时前
webpack 的性能优化
前端·javascript
gogoing1 小时前
Node.js 模块查找策略(require 完整流程)
javascript·node.js
桃花键神1 小时前
Bright Data Web Scraping指南 2026: 使用 MCP + Dify 自动采集海外社交媒体数据
大数据·前端·人工智能
gogoing1 小时前
await fetch() 的两阶段设计
前端·javascript