React使用笔记(持续更新中)

文件结构:

根目录(项目名)

|-config

|-config.jsx

|-src

|-taskpane

|-components

|-Login.jsx

|-taskpane.html

|-taskpane.jsx

|-index.jsx

|-until

|-common.jsx

until/common.jsx代码:

bash 复制代码
// utils/request.js
import { API_BASE_URL } from "@config/config";
// 封装 fetch
export async function request(url,options = {},token="") {
  const finalUrl = API_BASE_URL + url;
  let defaultOptions=false;
  if(token){
    defaultOptions = {
      headers: {
        "Content-Type": "application/json",
        'Authorization': `Bearer ${token}`,
      },
      mode: 'cors',  // 确保是 CORS 模式
      ...options,
    };
  }else{
    defaultOptions = {
      headers: {
        "Content-Type": "application/json",
      },
      mode: 'cors',  // 确保是 CORS 模式
      ...options,
    };
  }
  

  try {
    const res = await fetch(finalUrl, defaultOptions);

    if (!res.ok) {
      throw new Error(`请求失败: ${res.status} ${res.statusText}`);
    }

    // 自动解析 JSON
    const data = await res.json();
    return data;
  } catch (err) {
    console.error("请求错误:", err);
    throw err;
  }
}

// 便捷方法:GET
export function get(url,params=false,token="") {
  let queryString = "";
  if (params) {
    const searchParams = new URLSearchParams();
    params.forEach((item, index) => {
      searchParams.append(index, item);
    });
    queryString = `?${searchParams.toString()}`;
  }
  return request(url + queryString, { method: "GET" },token);
}

// 便捷方法:POST
export async function post(url, params,token="") {
  return request(url, {
    method: "POST",
    body: JSON.stringify(params),
  },token);
}

config/config.jsx代码:

bash 复制代码
export const API_BASE_URL = "http://localhost";
export const API_URL = {
    Edit_Url:"/index/meal/dataupdate",
    Login_Url:"/index/meal/mlwlogin",
}

一、如果要在对应文件中引用非同级的文件

例如:index.jsx中需要应用Login.jsx、until/common.jsx和config/config.jsx。引用Login.jsx文件可以直接./components/Logins.jsx。但是使用until/common.jsx和config/config.jsx就有两种方式。

bash 复制代码
import * as React from "react";
import Login from "./components/Login";
import { API_URL } from "@config/config";
import {post} from "@utils/common";

const rootElementLogin = document.getElementById("container");
const rootLogin = rootElementLogin ? createRoot(rootElementLogin) : undefined;

async function greetUser() {
    let params={
        userid:123
    };
    const result = await post(API_URL.Edit_Url, params);
    return <div>
                <div>123</div>
                <Login></Login>
            </div>;
}

第一种:无需作配置,直接使用

bash 复制代码
import {API_URL} from "../../config/config.jsx";
import {post} from "../../until/commont.jsx";

第二种:需要做配置,可以直接使用定义的内容应用

bash 复制代码
import { API_URL } from "@config/config";
import {post} from "@utils/common";

配置内容:

bash 复制代码
//在tsconfig.json中加入配置
{
  "compilerOptions": {
    //配置根目录
    "baseUrl": ".",
    "paths": {
      "@config/*": ["config/*"],
      "@utils/*": ["utils/*"]
    }
},
  //配置根目录
  "include": ["config", "utils"]
}
//项目类型,配置构建工具。一般就两种vite.config.ts或者webpack.config.js
//webpack.config.js:
const path = require("path");
module.exports = async (env, options) => {
    resolve: {
      alias: {
        "@config": path.resolve(__dirname, "config"),
        "@utils": path.resolve(__dirname, "utils")
      },
    },
});


//vite.config.ts:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      '@config': path.resolve(__dirname, './config'),
      '@utils': path.resolve(__dirname, './utils')
    }
  }
})
相关推荐
CHU729035几秒前
扭蛋机盲盒小程序前端功能设计解析:打造趣味与惊喜并存的消费体验
前端·小程序
前端布道师5 分钟前
Web响应式:列表自适应布局
前端
ZeroTaboo7 分钟前
rmx:给 Windows 换一个能用的删除
前端·后端
李剑一18 分钟前
Vue实现大屏获取当前所处城市及当地天气(纯免费)
前端
踢足球092928 分钟前
寒假打卡:2026-2-7
java·开发语言·javascript
_果果然29 分钟前
这 7 个免费 Lottie 动画网站,帮你省下一个设计师的工资
前端
QT.qtqtqtqtqt31 分钟前
uni-app小程序前端开发笔记(更新中)
前端·笔记·小程序·uni-app
楚轩努力变强1 小时前
iOS 自动化环境配置指南 (Appium + WebDriverAgent)
javascript·学习·macos·ios·appium·自动化
Aliex_git1 小时前
跨域请求笔记
前端·网络·笔记·学习
John_ToDebug1 小时前
引擎深处的漫游者:构建浏览器JavaScript引擎的哲学与技艺
javascript·chrome·js