基本 API

dynamic

动态加载组件。

  1. import { dynamic } from 'umi';
  2. const delay = (timeout) => new Promise(resolve => setTimeout(resolve, timeout));
  3. export default dynamic({
  4. loader: async function() {
  5. await delay(/* 1s */1000);
  6. return () => <div>I will render after 1s</div>;
  7. },
  8. });

history

可用于获取当前路由信息,

  1. import { history } from 'umi';
  2. // history 栈里的实体个数
  3. console.log(history.length);
  4. // 当前 history 跳转的 action,有 PUSH、REPLACE 和 POP 三种类型
  5. console.log(history.action);
  6. // location 对象,包含 pathname、search 和 hash
  7. console.log(history.location.pathname);
  8. console.log(history.location.search);
  9. console.log(history.location.hash);

可用于路由跳转,

  1. import { history } from 'umi';
  2. // 跳转到指定路由
  3. history.push('/list');
  4. // 带参数跳转到指定路由
  5. history.push('/list?a=b');
  6. history.push({
  7. pathname: '/list',
  8. query: {
  9. a: 'b',
  10. },
  11. });
  12. // 跳转到上一个路由
  13. history.goBack();

也可用于路由监听,

  1. import { history } from 'umi';
  2. const unlisten = history.listen((location, action) => {
  3. console.log(location.pathname);
  4. });
  5. unlisten();

plugin

主要在插件利用,项目代码中一般用不到。

运行时插件接口,是 Umi 内置的跑在浏览器里的一套插件体系。

比如:

  1. import { plugin, ApplyPluginsType } from 'umi';
  2. // 注册插件
  3. plugin.register({
  4. apply: { dva: { foo: 1 } },
  5. path: 'foo',
  6. });
  7. plugin.register({
  8. apply: { dva: { bar: 1 } },
  9. path: 'bar',
  10. });
  11. // 执行插件
  12. // 得到 { foo: 1, bar: 1 }
  13. plugin.applyPlugins({
  14. key: 'dva',
  15. type: ApplyPluginsType.modify,
  16. initialValue: {},
  17. args: {},
  18. async: false,
  19. });

参数属性包含:

  • key,坑位的 key
  • type,执行方式类型,详见 ApplyPluginsType
  • initialValue,初始值
  • args,参数
  • async,是否异步执行且返回 Promise

ApplyPluginsType

主要在插件利用,项目代码中一般用不到。

运行时插件执行类型,enum 类型,包含三个属性:

  • compose,用于合并执行多个函数,函数可决定前序函数的执行时机
  • modify,用于修改值
  • event,用于执行事件,前面没有依赖关系