约定一个地方生产和消费初始化数据。
有 src/app.ts 并且导出 getInitialState 方法时启用。
本插件不可直接使用,必须搭配 @umijs/plugin-model 一起使用。
当前插件只有一个运行时配置。
() => Promise<any>该配置是一个 async 的 function。会在整个应用最开始执行,返回值会作为全局共享的数据。Layout 插件、Access 插件以及用户都可以通过 useModel('@@initialState') 直接获取到这份数据。
// src/app.tsexport async function getInitialState() {const data = await fetchXXX();return data;}
配合 useModel 获取初始值:
import { useModel } from 'umi';export default () => {const { initialState, loading, error, refresh, setInitialState } = useModel('@@initialState');return <>{initialState}</>};
anyundefined运行时配置中,getInitialState 的返回值。
booleantruegetInitialState 是否处于 loading 状态,在首次获取到初始状态前,页面其他部分的渲染都会被阻止。loading 可用于判断 refresh 是否在进行中。
Errorundefined当运行时配置中,getInitialState throw Error 时,会将错误储存在 error 中。
() => void重新执行 getInitialState 方法,并获取新数据。
(state: any) => void手动设置 initialState 的值,手动设置完毕会将 loading 置为 false.
initialState 从 @umijs/plugin-initial-state 插件中获取,需要搭配一起使用。
通常该插件会配置 @umijs/plugin-layout 和 @umijs/plugin-access 插件一起使用,和 Layout 插件一起使用的时候返回的数据要符合 Layout 的要求。