Skip to content

Commit

Permalink
feat: 메인페이지 동아리 필터 및 리스트 렌더링 기능 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
oesnuj committed Feb 2, 2025
1 parent e9cb34d commit 9b836f6
Showing 1 changed file with 47 additions and 6 deletions.
53 changes: 47 additions & 6 deletions frontend/src/pages/MainPage/MainPage.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,58 @@
import React, { useState } from 'react';
import React, { useState, useEffect } from 'react';
import CategoryButtonList from '@/pages/MainPage/components/CategoryButtonList/CategoryButtonList';
import ClubCard from '@/pages/MainPage/components/ClubCard/ClubCard';
import StatusRadioButton from '@/pages/MainPage/components/StatusRadioButton/StatusRadioButton';
import { mockClubs } from '@/apis/mockClubs';
import * as Styled from './MainPage.styles';

const MainPage = () => {
const [selectedCategory, setSelectedCategory] = useState<string>('all');
const [isFilterActive, setIsFilterActive] = useState(false);
const [selectedCategory, setSelectedCategory] = useState('전체');
const [filteredClubs, setFilteredClubs] = useState(mockClubs);

const handleCategorySelect = (categoryId: string) => {
setSelectedCategory(categoryId);
const handleFilterChange = (status: boolean) => {
setIsFilterActive(status);
};

const handleCategorySelect = (category: string) => {
setSelectedCategory(category);
};

useEffect(() => {
let filtered = mockClubs;

if (isFilterActive) {
filtered = filtered.filter(
(club) => club.state === '모집중' || club.state === '모집예정',
);
}

if (selectedCategory !== '전체') {
filtered = filtered.filter(
(club) => club.classification === selectedCategory,
);
}

setFilteredClubs(filtered);
}, [isFilterActive, selectedCategory]);

return (
<>
<Styled.PageContainer>
<CategoryButtonList onCategorySelect={handleCategorySelect} />
</>
<Styled.FilterWrapper>
<StatusRadioButton onChange={handleFilterChange} />
</Styled.FilterWrapper>

<Styled.ContentWrapper>
<Styled.CardList>
{filteredClubs.length > 0 ? (
filteredClubs.map((club) => <ClubCard key={club.id} club={club} />)
) : (
<p>조건에 맞는 동아리가 없어요</p>
)}
</Styled.CardList>
</Styled.ContentWrapper>
</Styled.PageContainer>
);
};

Expand Down

0 comments on commit 9b836f6

Please sign in to comment.