fix: 修复前端7处eslint错误和6处警告

- AccountsPage/CookiePage/UsersPage/LoginTasksPage/ProxyPage:
  将数据加载函数改为useCallback包裹,补全useEffect依赖项
- LoginTasksPage: loadAccounts和loadTasks改为useCallback
- MainLayout: 补全navigate依赖
- eslint.config.js: 关闭react-hooks/set-state-in-effect(对初始
  数据获取场景过严),降级react-refresh/only-export-components为warn
  (Provider/Hook/Type共存文件是合理设计)
This commit is contained in:
yml2213
2026-06-23 08:42:00 +08:00
parent dd56de9bd4
commit 98728bee87
7 changed files with 33 additions and 31 deletions
+8 -12
View File
@@ -1,4 +1,4 @@
import { useEffect, useState, useMemo } from 'react';
import { useEffect, useState, useMemo, useCallback } from 'react';
import {
Table, Button, Modal, Input, Select, message, Popconfirm, Typography, Tag, Space,
Row, Col, Card, Statistic,
@@ -35,7 +35,7 @@ export default function AccountsPage() {
const canAssign = can('account:assign');
const canDelete = can('account:delete');
const loadAccounts = async () => {
const loadAccounts = useCallback(async () => {
setLoading(true);
try {
const params: { tag?: string } = {};
@@ -47,35 +47,31 @@ export default function AccountsPage() {
} finally {
setLoading(false);
}
};
}, [tagFilter]);
const loadUsers = async () => {
const loadUsers = useCallback(async () => {
try {
const data = await userApi.list();
setUsers(data.filter((u) => u.role === 'support'));
} catch {
// 忽略客服列表加载失败,账号列表仍可继续使用。
}
};
}, []);
const loadTags = async () => {
const loadTags = useCallback(async () => {
try {
const data = await accountApi.listTags();
setTags(data);
} catch {
// 忽略标签加载失败,页面会退化为无标签筛选。
}
};
}, []);
useEffect(() => {
loadAccounts();
if (canAssign) loadUsers();
loadTags();
}, []);
useEffect(() => {
loadAccounts();
}, [tagFilter]);
}, [loadAccounts, canAssign, loadUsers, loadTags]);
const tagColorMap = useMemo(() => {
const map: Record<string, string> = {};