'use client' import React, { useState, useEffect } from 'react'; import { useQuery } from 'react-query'; import { searchJobs } from '@/api/api'; import { Input, Button, Spin, List, Select, Checkbox, InputNumber, Card } from 'antd'; import { SearchOutlined } from '@ant-design/icons'; import style from './SearchWidget.module.scss'; import { JobData } from '@/types/types'; import { skillsOptions } from '@/fsd/entities/Resume/data'; import { initThemeParams } from '@tma.js/sdk-react'; const { Option } = Select; const SearchWidget: React.FC = () => { const [query, setQuery] = useState(''); const [year, setYear] = useState(); const [qualification, setQualification] = useState(); const [time, setTime] = useState([]); const [salary, setSalary] = useState(); const [hardskills, setHardskills] = useState([]); const [searchResults, setSearchResults] = useState([]); const [themeParams] = initThemeParams(); // Функция для формирования объекта параметров const buildQueryParams = () => { const params: any = {}; // Или укажите более точный тип, соответствующий JobsSearch if (year !== undefined) { params.year = year; } if (qualification !== undefined) { params.qualification = qualification; } if (time.length > 0) { params.time = time; // здесь может потребоваться изменить на массив строк } if (salary !== undefined) { params.salary = salary; } if (hardskills.length > 0) { params.hardskills = hardskills; } if (query) { params.search = query; } return params; // Возвращаем объект вместо строки }; // Вызов useQuery с объектом const { data, error, isLoading, refetch } = useQuery( ['searchJobs', buildQueryParams()], () => { const queryParams = buildQueryParams(); // Получаем объект параметров return searchJobs(queryParams); // Передаём объект в функцию }, { enabled: false, refetchOnWindowFocus: false, retry: false } ); // Используем useEffect для обновления searchResults, когда запрос завершен useEffect(() => { if (data) { setSearchResults(data); } }, [data]); const handleSearch = () => { refetch(); }; if (isLoading) return ; if (error) return
Ошибка при поиске вакансий
; return (
setQuery(e.target.value)} prefix={} style={{ marginBottom: 20 }} /> setQualification(e.target.checked)} style={{ marginBottom: 20, color: themeParams.textColor }} > Требуется квалификация setSalary(value !== null ? value : undefined)} style={{ width: '100%', marginBottom: 20 }} />