umi中使用plugin-initial-state插件(initialState)

关于这个插件,官方给出的解释是‘约定一个地方生产和消费初始化数据。有 src/app.ts 并且导出 getInitialState 方法时启用。’

这是官方文档

理解为在初始化进入页面,或者在每次刷新页面时,获取需要的基础数据展示

首先,使用getInitialState,该配置是一个 async 的 function。会在整个应用最开始执行,返回值会作为全局共享的数据。Layout 插件、Access 插件以及用户都可以通过 useModel('@@initialState') 直接获取到这份数据:

// 在app.jsx里面进行获取初始化数据

const initialState = {

};

export async function getInitialState() {
  Promise.all([
	    salesList(),   // 接口请求事件
	    goodsList(),
  ]).then(([salesGoods, allGoods]) => {
	    Object.assign(initialState, {
		      salesgoodsList: salesGoods?.data,
		      allgoodsList: allGoods?.data,
	    });
  });

  return initialState;
}

然后在需要的页面进行数据获取渲染:

import { useModel } from 'umi';   // 要配合useModel 去获取数据
const {
	    initialState: {   // 初始化数据
		      salesgoodsList= [],
		      allgoodsList= [],
	    },
	    loading,  // getInitialState 是否处于 loading 状态,在首次获取到初始状态前,页面其他部分的渲染都会被阻止。loading 可用于判断 refresh 是否在进行中。
	    error,  // 当运行时配置中,getInitialState throw Error 时,会将错误储存在 error 中。
	    refresh,  // 重新执行 getInitialState 方法,并获取新数据。相当于刷新了一遍初始化数据,但是页面无感知。// refresh()
	    setInitialState  // 手动设置 initialState 的值,手动设置完毕会将 loading 置为 false.  // setInitialState({ ...initialState, allgoodsList: data })
  } = useModel('@@initialState');

// 直接使用获取到的初始化数据
function handleData () {
	console.log(salesgoodsList)
}
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值