평소 조건부 내용 출력에 3항 연산자를 메인으로 사용했는데 새로운 방법 두 가지를 더 알게 되었다.
(주석 Here 부분)
function Expenses(props){
const [filteredYear, setFilteredYear] = useState('2020');
const filterChangeHandler = selectedYear => {
setFilteredYear(selectedYear);
};
const filteredExpenses = props.items.filter(expense => {
return expense.date.getFullYear().toString() === filteredYear;
});
return(
<div>
<Card className="expenses">
<ExpenseFilter
selected={filteredYear}
onChangeFilter={filterChangeHandler}
/>
{/* Here */}
{filteredExpenses.length === 0 ? (
<p>No expenses found.</p>
) : (
filteredExpenses.map( (expense) => (
<ExpenseItem
key={expense.id}
title={expense.title}
amount={expense.amount}
date={expense.date}
/>
))
)}
</Card>
</div>
);
}
function Expenses(props){
const [filteredYear, setFilteredYear] = useState('2020');
const filterChangeHandler = selectedYear => {
setFilteredYear(selectedYear);
};
const filteredExpenses = props.items.filter(expense => {
return expense.date.getFullYear().toString() === filteredYear;
});
return(
<div>
<Card className="expenses">
<ExpenseFilter
selected={filteredYear}
onChangeFilter={filterChangeHandler}
/>
{/* Here */}
{filteredExpenses.length === 0 && <p>No expenses found.</p>}
{filteredExpenses.length > 0 &&
filteredExpenses.map( (expense) => (
<ExpenseItem
key={expense.id}
title={expense.title}
amount={expense.amount}
date={expense.date}
/>
))
}
</Card>
</div>
);
}
function Expenses(props){
const [filteredYear, setFilteredYear] = useState('2020');
const filterChangeHandler = selectedYear => {
setFilteredYear(selectedYear);
};
const filteredExpenses = props.items.filter(expense => {
return expense.date.getFullYear().toString() === filteredYear;
});
// Here
let expensesContent = <p>No expenses found.</p>;
if (filteredExpenses.length > 0){
expensesContent = filteredExpenses.map( (expense) => (
<ExpenseItem
key={expense.id}
title={expense.title}
amount={expense.amount}
date={expense.date}
/>
))
}
return(
<div>
<Card className="expenses">
<ExpenseFilter
selected={filteredYear}
onChangeFilter={filterChangeHandler}
/>
{/* Here */}
{expensesContent}
</Card>
</div>
);
}
출처: Udemy Maximilian Schwarzmüller <React 완벽 가이드 with Redux, Next.js, TypeScript> 74강