UmiJS介绍--api(八)

本文详细介绍了UmiJS的API用法,涵盖了路由的umi/link、umi/router及其各种方法,如push、replace、goBack等。还提到了性能优化的umi/dynamic,以及构建相关的umi/babel配置扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.路由

1.1 umi/link
通过声明的方式做路由跳转。

import Link from 'umi/link';

export default () => {
  <div>
    /* 普通使用 */
    <Link to="/list">Go to list page</Link>

    /* 带参数 */
    <Link to="/list?a=b">Go to list page</Link>

    /* 包含子组件 */
    <Link to="/list?a=b"><button>Go to list page</button></Link>
  </div>
}

1.2 umi/router
通过编程的方式做路由切换,包含以下 4 个 API 。
1.2.1 router.push(path)
推一个新的页面到 history 里。

import router from 'umi/router';

// 普通跳转,不带参数
router.push('/list');

// 带参数
router.push('/list?a=b');
router.push({
  pathname: '/list',
  query: {
    a: 'b',
  },
});
# 对象且不包含 pathname 会报错
router.push({
  query: {}
});

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

1.2.3 router.go(n)
往前或往后跳指定页数。

import router from 'umi/router';

router.go(-1);
router.go(2);

1.2.4 router.goBack()

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

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

<NavLink
  to="/faq"
  activeStyle={{
    fontWeight: "bold",
    color: "red"
  }}
>
  FAQs
</NavLink>

1.4 umi/redirect
重定向用。
详见:https://reacttraining.com/react-router/web/api/Redirect

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

1.5 umi/prompt
详见:https://reacttraining.com/react-router/web/api/Prompt

import Prompt from 'umi/prompt';

export default () => {
  return (
    <>
      <h1>Prompt</h1>
      <Prompt
        when={true}
        message={(location) => {
          return window.confirm(`confirm to leave to ${location.pathname}?`);
        }}
      />
    </>
  );
}

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

import withRouterfrom 'umi/withRouter';
export default withRouter(MyComponent)

2.性能

umi/dynamic
动态加载组件,基于 react-loadable 实现

import dynamic from 'umi/dynamic';

// 延时 1s 渲染的组件。
const App = dynamic({
  loader: () => {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve(() => <div>I will render after 1s</div>);
      }, /* 1s */1000);
    }));
  },
});

// 或者用 async 语法
const delay = (timeout) => new Promise(resolve => setTimeout(resolve, timeout));
const App = dynamic({
  loader: async function() {
    await delay(/* 1s */1000);
    return () => <div>I will render after 1s</div>;
  },
});

3.构建

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

来源https://umijs.org/zh/guide/with-dva.html

npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: antd@4.24.12 npm ERR! Found: react@16.8.6 npm ERR! node_modules/react npm ERR! react@"16.8.6" from the root project npm ERR! peer react@"^16.8.0 || ^17.0.0" from @ahooksjs/use-request@2.8.15 npm ERR! node_modules/@ahooksjs/use-request npm ERR! @ahooksjs/use-request@"^2.0.0" from @umijs/plugin-request@2.8.0 npm ERR! node_modules/@umijs/plugin-request npm ERR! @umijs/plugin-request@"2.8.0" from @umijs/preset-react@1.8.32 npm ERR! node_modules/@umijs/preset-react npm ERR! dev @umijs/preset-react@"1.8.32" from the root project npm ERR! 34 more (@ant-design/icons, dva, @ant-design/icons, ...) npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer react@">=16.9.0" from antd@4.24.12 npm ERR! node_modules/antd npm ERR! antd@"4.24.12" from the root project npm ERR! antd@"^4.1.3" from @umijs/plugin-antd@0.13.0 npm ERR! node_modules/@umijs/plugin-antd npm ERR! @umijs/plugin-antd@"0.13.0" from @umijs/preset-react@1.8.32 npm ERR! node_modules/@umijs/preset-react npm ERR! dev @umijs/preset-react@"1.8.32" from the root project npm ERR! 1 more (@umijs/plugin-layout) npm ERR! npm ERR! Conflicting peer dependency: react@19.1.0 npm ERR! node_modules/react npm ERR! peer react@">=16.9.0" from antd@4.24.12 npm ERR! node_modules/antd npm ERR! antd@"4.24.12" from the root project npm ERR! antd@"^4.1.3" from @umijs/plugin-antd@0.13.0 npm ERR! node_modules/@umijs/plugin-antd npm ERR! @umijs/plugin-antd@"0.13.0" from @umijs/preset-react@1.8.32 npm ERR! node_modules/@umijs/preset-react npm ERR! dev @umijs/preset-react@"1.8.32" from the root project npm ERR! 1 more (@umijs/plugin-layout) npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR!
最新发布
06-14
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值