Study/Udemy-React-완벽 가이드
5. 리스트 렌더링 및 조건부 Content (feat. 유데미 React 완벽 가이드)
NFAP0221S
2022. 5. 28. 13:05
https://www.udemy.com/course/best-react/
【한글자막】 React 완벽 가이드 with Redux, Next.js, TypeScript
Javascript부터 웹 어플리케이션 배포까지, React와 프론트엔드 최신 기술을 가장 쉽고 확실하게 배우는 법
www.udemy.com
이 게시물은 유데미 React 완벽 가이드 강의를 보고 메모를 남기는 게시물 입니다.
1. 동적 렌더링
map함수 사용하기
정적으로 렌더링중인 ExpensesFilter를 동적렌더링으로 바꾸어보자
return (
<div>
<Card className="expenses">
<ExpensesFilter
selected={filteredYear}
onChangeFilter={filterChageHandler}
/>
<ExpenseItem
title={props.items[0].title}
amount={props.items[0].amount}
date={props.items[0].date}
/>
<ExpenseItem
title={props.items[1].title}
amount={props.items[1].amount}
date={props.items[1].date}
/>
<ExpenseItem
title={props.items[2].title}
amount={props.items[2].amount}
date={props.items[2].date}
/>
<ExpenseItem
title={props.items[3].title}
amount={props.items[3].amount}
date={props.items[3].date}
/>
</Card>
</div>
);
# Expenses.js
props로 받은 items를 map함수를 이용해 동적으로 렌더링한다.
return (
<div>
<Card className="expenses">
<ExpensesFilter
selected={filteredYear}
onChangeFilter={filterChageHandler}
/>
{props.items.map((expense) => (
<ExpenseItem
title={expense.title}
amount={expense.amount}
date={expense.date}
/>
))}
</Card>
</div>
);
# Expenses.js
2. state 저장 목록
그럼 Title, Amount, Date 값을 입력 후 Add Expense버튼을 눌렀을 때 저장된 리스트를 최상단에 위치하게 하려면 어떻게 해야할까?
addExpenseHandler가 실행되면 추가된 expense 의 다음 인덱스 요소로 ...prevExpenses를 할댕해주면 된다.
function App() {
const [expenses, setExpenses] = useState(DUMMY_EXPENSES);
const addExpenseHandler = (expense) => {
// prevExpenses: 이전의 상태값
setExpenses((prevExpenses) => {
return [expense, ...prevExpenses]; // 현재의 값을 최상단으로 올리고 하단에는 이전의 값을 배치함
});
};
# App.js
ExpenseForm 에서 입력한 값들이 상단으로 추가 된걸 확인할 수 있다.