[ #6 ] setState & conditional content

1. useState 를 사용하는 방법.

기존코드



const[expenses, setExpenses]=useState(initial_expenses)

  const addExpenseHandler = (expense) => {
    temp = [{
        ...data,
        expense,
    }]
    setExpenses(temp);
  }

함수 useState()는 현재값과, setExpenses라는 값을 변경하는 메소드를 반환하는줄 알았고, setExpenses(바꿀값) 을 통하여 값을 직접 변경할 수 있는정도로만 알고있엇다.

useState의 두번째 반환값 setExpenses을 활용하는 방법에 대해서 배웠다.
만약에 currentState의 값이 prev값과 연관이 있을경우 이를 온전히 사용할 수 있다는것을 말이다.
setExpenses 는 이전 state의 값을 가지고 있다는 것을 알 수 있었고, 값을 그냥 변경하는 경우가아닌 이전 값에 연관이 있을경우 아래의 코드와 같이 간결하게 표현 할 수 있는 방법을 배웠다.

수정후

const addExpenseHandler = (expense) => {
    setExpenses(prevExpense => {
      return [expense,...prevExpense]
    })
  }

2. Conditional content

무언가 보여줄때 조건문을 통하여 보여줄 수 있는 방법을 배웠다.

기존코드

    <Card className="expenses">
    {expenses}
    </Card>
    //만약에 expense에 아무 값이없을경우 아무것도 보이지 않아 허전하다.

조건문 적용후

    <Card className="expenses">
    //삼항연산자를 이용하여 아무 값이 없을경우 없다고 출력해주고 존재한다면 해당 리스트 출력해주기.
    {expenses.length === 0 ? <p>No expenses found</p> : expenses}
    </Card>