umi 使用 umi

日期: 栏目:常识 浏览:16

umi  使用 umi

1、安装

1.1、首先 cd 到项目目录,然后执行 cmd,键入命令:

> npm create umi pnpm create umi yarn create umi bunx create-umi

1.2、选择模板

> Simple App Ant Design Pro Vue Simple App

1.3、选择方式

> npm cnpm tnpm yarn pnpm

1.4、选择镜像

 npm> taobao

1.5、安装依赖

npm i @umijs/plugins -Dnpm i antd axios @ant-design/pro-layout -S

2、启动

npm run devumi devinfo - Umi v4.0.46 ╔════════════════════════════════════════════════════╗ ║ App listening at: ║ ║ > Local:  ║ready - ║ > Network: *********:8000 ║ ║ ║ ║ Now you can open browser with the above addresses↑ ║ ╚════════════════════════════════════════════════════╝

3、路由

3.1、新建

npx umi g page bs/productsWrite: src/pages/products.tsxWrite: src/pages/products.less

3.2、注册

修改.umirc.ts

import { defineConfig } from "umi";export default defineConfig({ routes: [ { path: "/", component: "index" }, { path: "/docs", component: "docs" },+ { path: "/products", component: "@/pages/products"" }, ], npmClient: "pnpm",});

3.3、使用

修改src/layouts/index.tsx

  • Docs
  • +
  • + Products+
  • 4、实现 ProductList UI 组件

    组件src/components/productList/ProductList.tsx

    import { Button, Popconfirm, Table } from 'antd';import React from 'react';const ProductList: React.FC<{ products: { name: string }[]; onDelete: (id: string) => void }> = ({ onDelete, products,}) => { const columns = [ { title: 'Name', dataIndex: 'name', }, { title: 'Actions', render(text: string, record: object) { return (  onDelete(record.id)}>   ); }, }, ]; return ;};export default ProductList;

    5、完成 productList 页面

    修改.umirc.ts

    import { defineConfig } from "umi";export default defineConfig({+ plugins: ['@umijs/plugins/dist/react-query'],+ reactQuery: {}, routes: [ { path: "/", component: "index" }, { path: "/docs", component: "docs" }, { path: "/products", component: "products" }, ], npmClient: 'pnpm',});

    修改src/pages/bs/products/products.tsx

    import ProductList from '@/components/ProductList';import axios from 'axios';import React from 'react';import { useMutation, useQuery, useQueryClient } from 'umi';import styles from './products.less';export default function Page() { const queryClient = useQueryClient(); const productsQuery = useQuery(['products'], { queryFn() { return axios.get('/api/products').then((res) => res.data); }, }); const productsDeleteMutation = useMutation({ mutationFn(id: string) { return axios.delete(`/api/products/${id}`); }, onSettled: () => { queryClient.invalidateQueries({ queryKey: ['products'] }); }, }); if (productsQuery.isLoading) return null; return ( 

    Page products

    { productsDeleteMutation.mutate(id); }} />
    );}

    6、ProLayout

    .umirc.ts

    import { defineConfig } from "umi";export default defineConfig({ routes: [- { path: "/", component: "index" },+ { path: "/", component: "index", name: "home" },- { path: "/docs", component: "docs" },+ { path: "/docs", component: "docs", name: "docs" },- { path: "/products", component: "products" },+ { path: "/products", component: "products", name: "products" }, ], plugins: ["@umijs/plugins/dist/react-query"], reactQuery: {}, npmClient: "pnpm",});

    编辑src/layouts/index.tsx

    import { ProLayout } from '@ant-design/pro-layout';import { Link, Outlet, useAppData, useLocation } from 'umi';export default function Layout() { const { clientRoutes } = useAppData(); const location = useLocation(); return (  { if (menuItemProps.isUrl || menuItemProps.children) { return defaultDom; } if (menuItemProps.path && location.pathname !== menuItemProps.path) { return (  {defaultDom}  ); } return defaultDom; }} >   );}

    7、构建

    npm run buildinfo - Umi v4.0.46✔ Webpack Compiled successfully in 5.31sinfo - File sizes after gzip: 122.45 kB dist/umi.js 575 B dist/src__pages__products.async.js 312 B dist/src__pages__index.async.js 291 B dist/layouts__index.async.js 100 B dist/layouts__index.chunk.css 55 B dist/src__pages__products.chunk.cssevent - Build index.html
    本文地址:https://caijingdemo.com/changshi/42490.html

    标签: