본문 바로가기

Daily Coding - FE 3주차 - 34강

@Breadbread22024. 10. 11. 23:03
반응형

34강

리스트 필터링

리스트에 필터를 걸어주기 위해서는 state로 조건을 가지고 있고, filter() 메서드를 사용해서 매번 state가 바뀔 때마다 업데이트 해준다.

컴포넌트가 바뀔때마다 리랜더링이 발생한다.

import React, {useState} from 'react';

import ExpenseItem from "./ExpenseItem";
import Card from "../UI/Card";
import "./Expenses.css";
import ExpensesFilter from './ExpensesFilter';

const Expenses = (props) => {
	const [filteredYear, setFilteredYear] = useState('2023');

	const filterChangeHandler = (selectedYear) => {
		setFilteredYear(selectedYear);
	};

	const filteredExpenses = props.items.filter((expense) => {
		return expense.date.getFullYear().toString() === filteredYear
	});

	let filterCheck = <p>선택지가 없습니다.</p>
	if(filteredExpenses.length > 0) {
		filterCheck = filteredExpenses.map((item) => (
				<ExpenseItem
					title={item.title}
					amount={item.amount}
					date={item.date}
				/>
			))
	}


	return (
		<Card className="expenses">
			<ExpensesFilter
				selected={filteredYear}
				onChangeFilter={filterChangeHandler}
			/>
			{filterCheck}
		</Card>
	);
};

export default Expenses;

 

 

import React, {useState} from 'react';

import ExpenseItem from "./ExpenseItem";
import Card from "../UI/Card";
import "./Expenses.css";
import ExpensesFilter from './ExpensesFilter';

const Expenses = (props) => {
	const [filteredYear, setFilteredYear] = useState('2023');

	const filterChangeHandler = (selectedYear) => {
		setFilteredYear(selectedYear);
	};

	const filteredExpenses = props.items.filter((expense) => {
		return expense.date.getFullYear().toString() === filteredYear
	});

	return (
		<Card className="expenses">
			<ExpensesFilter
				selected={filteredYear}
				onChangeFilter={filterChangeHandler}
			/>
		{filteredExpenses.length > 0 ?
			filteredExpenses.map((item) => (
			<ExpenseItem
					title={item.title}
					amount={item.amount}
					date={item.date}
				/>
			)) : <p>선택지가 없습니다.</p>
		}
		</Card>
	);
};

export default Expenses;
반응형
Breadbread2
@Breadbread2 :: 혼자만의 시간은 좋지만, 혼자는 싫다냐옹 (건들지 말라옹)

안녕하세요~! 저의 블로그를 방문해주셔서 감사합니다!! 좋은 정보 많이 많이 공유할게요~! 자주 놀러와주세요!

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차