TIL

240813

playhong 2024. 8. 13. 20:45

FACTS(사실, 객관) : 내가 한 일

 

하나 수정하면 다른쪽에서 삐끗하고 

하나 수정하면 갑자기 화면이 사라지고

추가하고 수정까지 마쳤고 삭제를 할 차례인데

//리스트삭제
  const handleDeleteCountry = (id) =>{
    const filteringCountries = countries.filter(function(country){
      return country.id != id
    });
    console.log(filteringCountries);
    
  };

강의를 보면서 어찌저찌 짜긴했는데 console.log에 삭제되는 객체가 찍히는게 아니라 삭제되고 남은 객체가 찍힘..

질문하니 이게 원래 맞고, 삭제되고 남은 객체를 set~~를 통해 화면에 다시 뿌려줘야 한다는 것

그래서 바로 아래에 

setCountries(filteringCountries);

한 줄 추가해서 완성함.

 

필수 기능 구현은 마쳤는데 이제 검증이 잘 안됨

 

1. 만약 국가명을 입력하지 않았을 때 

"국가명을 입력하세요" 와 함께 메달 갯수를 몇개를 적었던 추가되면 안됨. =>해결!

even.preventDefault(); < 함수 맨 밑에 작성해서 코드가 아무것도 담지 않은채로 그냥 새로고침 됐음

이 코드는 항상 위에 있어야 하며, 위치를 바꾸니 정상적으로 작동됨!

 

2. 만약 중복된 국가명을 입력했을 때

"이미 존재하는 국가명입니다" 뜨면서 추가가 안됨

filter()함수를 쓰거나 find()함수를 쓸 수 있다고 하셨음 =>find함수로 해결!

let duplicateCountry = countries.find(function(c) {
      return c.country === country;
  });
    if(duplicateCountry){
      alert("국가명이 중복됨");
      return
    }

 

 

3. 만약 수정시, 해당 국가가 없을 때

"해당 국가가 없습니다"와 함께 수정이 되지 않음 => 해결!

const targetCountry = countries.find(function(c){
      if (c.country === country){
        return true
      }else{
        return alert("해당국가가 없습니다!")
      }

4. 삭제버튼 클릭시, 

"정말 삭제하시겠습니까?"경고창이 뜸 =>해결!

if (confirm("정말 삭제하시겠습니까?") === true){
      setCountries(filteringCountries); //삭제한 후의 객체들을 뿌려줌!
    }else{
      return false;
    }

 

 

5. sort함수로 메달갯수 대로 정렬하기!=>해결

  setCountries([...countries, newCountry].sort(function compare(a,b){
  	if(a.gold > b.gold){
    	return b.gold - a.gold}
    else if(a.gold === b.gold){
    	return b.silver - a.silver}
    else if(a.silver === b.silver){
    	return b.bronze - a.bronze}
  }))

처음에 ===말고 =(대입연산자)를 써서 모든 금메달 값이 0을 적어도 같은 값으로 고정되어 출력됐는데 ===로 제대로 수정하니 정상적으로 나열됐음!

 


FEELINGS(느낌, 주관) : 나의 감정적인 반응, 느낌

나 정말 혼자 할 수 있는게 아무것도 없구나!


FINDINGS(배운 것) : 그 상황으로부터 내가 배운 것, 얻은 것

 


FUTURE(미래) : 배운 것을 미래에는 어떻게 적용할 지

 

'TIL' 카테고리의 다른 글

240816  (0) 2024.08.16
240814  (0) 2024.08.14
240812  (0) 2024.08.12
240811  (0) 2024.08.11
240809  (0) 2024.08.09