setPerson((person) => ({...person, mentors: person.mentors.filter((mentor) => mentor.name !== name),}))
여기서 (mentor) => 뒷 부분을 { } 로 묶어주면 왜 오류가 날까?
() => {} 이런식으로 묶어서 사용하는 곳이 있고 아닌 곳이 있던데 왜 그런지 잘 모르겠다!
알아보니!
화살표 함수가 어떤 것을 바로 리턴하게 되면 블락없이 짧게 () => X 이렇게 표현할 수도 있다.
const fn = () => {
// do something
return a === b;
}
const fn1 = () => a === b;
이 예시 함수들은 모두 boolean 을 리턴하는 함수들임.
Array.filter method 는 위에 예시와 같이 true or false 를 리턴하는 콜백함수를 인자로 받아서 새로운 array를 만들어 내는데 질문대로 {}를 사용한다면,
items.filter((item) => {item.x ==='hello'});
여기서 자바스크립트는 추가된 {} 내에서 아무것도 리턴하지 않게 됨! 물론 오브젝트의 형태도 아님. 그래서 이렇게 써주어야 함!
items.filter((item) => {return item.x ==='hello'});
하지만 아래 표현이 더 간결하다.
items.filter((item) => item.x ==='hello');