API

路由

通过声明的方式做路由跳转。

例子:

  1. import Link from 'umi/link';
  2. export default () => {
  3. <div>
  4. /* 普通使用 */
  5. <Link to="/list">Go to list page</Link>
  6. /* 带参数 */
  7. <Link to="/list?a=b">Go to list page</Link>
  8. /* 包含子组件 */
  9. <Link to="/list?a=b"><button>Go to list page</button></Link>
  10. </div>
  11. }

umi/router

通过编程的方式做路由切换,包含以下 4 个 API 。

router.push(path)

推一个新的页面到 history 里。

例子:

  1. import router from 'umi/router';
  2. // 普通跳转,不带参数
  3. router.push('/list');
  4. // 带参数
  5. router.push('/list?a=b');
  6. router.push({
  7. pathname: '/list',
  8. query: {
  9. a: 'b',
  10. },
  11. });
  12. # 对象且不包含 pathname 会报错
  13. router.push({
  14. query: {}
  15. });

router.replace(path)

替换当前页面,参数和 router.push()) 相同。

router.go(n)

往前或往后跳指定页数。

例子:

  1. import router from 'umi/router';
  2. router.go(-1);
  3. router.go(2);

router.goBack()

后退一页。

例子:

  1. import router from 'umi/router';
  2. router.goBack();

详见:https://reacttraining.com/react-router/web/api/NavLink

umi/redirect

重定向用。

例子:

  1. import Redirect from 'umi/redirect';
  2. <Redirect to="/login" />

详见:https://reacttraining.com/react-router/web/api/Redirect

umi/withRouter

详见:https://reacttraining.com/react-router/web/api/withRouter

性能

umi/dynamic

动态加载组件。

dynamic(resolve)

例子:

  1. import dynamic from 'umi/dynamic';
  2. // 延时 1s 渲染的组件。
  3. const App = dynamic(() => {
  4. return new Promise((resolve) => {
  5. setTimeout(() => {
  6. resolve(() => <div>I will render after 1s</div>);
  7. }, /* 1s */1000);
  8. }));
  9. });
  10. // 或者用 async 语法
  11. const delay = (timeout) => new Promise(resolve => setTimeout(resolve, timeout));
  12. const App = dynamic(async function() {
  13. await delay(/* 1s */1000);
  14. return () => <div>I will render after 1s</div>;
  15. });

dynamic(resolve, { loading })

可以通过第二个参数可以指定 Loading Component 。

  1. dynamic(async function() {}, {
  2. loading() {
  3. return <div>Loading Component...</div>;
  4. }
  5. })

构建

umi/babel

让用户可基于 umi 的 babel 配置进行扩展。

原文: https://v1.umijs.org/api/