UmiMax学习笔记

发布时间:2024年01月24日
#### 安装:pnpm dlx create-umi@latest 

/**
 * access: 权限
 * 1. 在app.ts中配置全局初始化函数getInitialState
 * 2. 在根目录下的access.ts中配置自定义要暴露的权限种类
 * 3. 在routes中可直接使用access.ts中暴露的权限key(字符串形式)
 * 4. 在组件中使用const access = useAccess() 可拿到暴露的所有权限种类
 * 5. 搭配layout使用:当routes配置了access, 并且access值和app.tsx中的layout配置key相同时
 * 权限不满足则返回对应的页面内容
 * 如:app.tsx中
 *  export const layout = () => { 
        isAdmin: <div>您不是admin 暂时无权访问!</div> // 匹配routes中带有access并且access: 'isAdmin'
      };
    };
 * 
 *
 * Model: 数据流
 * 1. 直接在根目录下的models中添加文件xxx.ts
 * 获取:const {导出的变量} = useModel('xxx')
 * 
 * 2. 在pages下创建文件夹 aaa/models/bbb.ts
 * 获取:const {导出的变量} = useModel('aaa.bbb')
 * 
 * 3. 获取初始化initialState(在app.ts中通过getInitialState返回的数据)
 * const initialState = useModel('@@initialState')
 * 
 * 
 * 请求
 * 1. app.ts中配置export const request: RequestConfig = MyRequest
 * 2. utils下创建request.ts并导出MyRequest
 * import type { RequestConfig } from 'umi';

    const MyRequest: RequestConfig = {
      timeout: 1000,
      headers: {
        'Content-Type': 'application/json;charset:utf-8;'
      },
      // other axios options you want
      errorConfig: {
        errorHandler(error: any, opts) {
          switch (error?.code) {
            default:
              '请求错误'
          }
          return Promise.reject(error)
        },
        errorThrower() {
        }
      },
      requestInterceptors: [
        (url, options) => {
          const headers = options?.headers || {}
          // do something
          return {
            url,
            options: {
              ...options,
              headers: {
                ...headers,
                token: 'aaa'
              }
            }
          }
        },
      ],
      responseInterceptors: [
        (response) => { 
          // do something
          return response
        },
      ]
    };

    export default MyRequest
 * 
 * 3. src下创建services文件夹并创建user.ts,写入接口api
 *  import { request } from "@umijs/max"
    export const userList = (params?: {}) => {
      return request('/api/v1/queryUserList', {
        method: 'GET',
        ...params
      })
    }
 * 
 * 
 * 4. 使用useRequest
 * import { useRequest } from 'umi';
 * !!!hook形式调用,不能写在函数中调用,会报错
 *  const { data, error, loading, run }= useRequest(getUser, {
    manual: true, // 禁止自动调用
    loadingDelay: 200, // 延迟loading出现时间
   // refreshDeps: [name], // 必须 !! manual: false
  })

 // 在需要接口请求的地方调用run()
 */
文章来源:https://blog.csdn.net/zxo_apple/article/details/135826349
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。