feat: 将 IndustryProvider (176行) 完整迁移到 Redux

This commit is contained in:
zdl
2025-10-30 12:54:32 +08:00
parent a9e30d4eb9
commit c77061f36d
6 changed files with 207 additions and 193 deletions

View File

@@ -1,22 +1,25 @@
// src/views/Community/components/IndustryCascader.js
import React, { useState } from 'react';
import React, { useState, useCallback } from 'react';
import { Card, Form, Cascader } from 'antd';
import { useIndustry } from '../../../contexts/IndustryContext';
import { useSelector, useDispatch } from 'react-redux';
import { fetchIndustryData, selectIndustryData, selectIndustryLoading } from '../../../store/slices/industrySlice';
import { logger } from '../../../utils/logger';
const IndustryCascader = ({ onFilterChange, loading }) => {
const [industryCascaderValue, setIndustryCascaderValue] = useState([]);
// 使用全局行业数据
const { industryData, loadIndustryData, loading: industryLoading } = useIndustry();
// 使用 Redux 获取行业数据
const dispatch = useDispatch();
const industryData = useSelector(selectIndustryData);
const industryLoading = useSelector(selectIndustryLoading);
// Cascader 获得焦点时加载数据
const handleCascaderFocus = async () => {
const handleCascaderFocus = useCallback(async () => {
if (!industryData || industryData.length === 0) {
logger.debug('IndustryCascader', 'Cascader 获得焦点,开始加载行业数据');
await loadIndustryData();
await dispatch(fetchIndustryData());
}
};
}, [dispatch, industryData]);
// Cascader 选择变化
const handleIndustryCascaderChange = (value, selectedOptions) => {