본문 바로가기

전체 글337

[JS] 14. Longest Common Prefix 내 풀이는 아래와 같지만, 성능 개선을 위해서는 check 로 쓴 상태를 없애고, 이처럼 문자열을 더하기보다 인덱스를 구해서 splice 로 한번에 얻는 것이 좋다 다음 풀이 시 고려해서 효율적으로 풀어보자 /** * @param {string[]} strs * @return {string} */ var longestCommonPrefix = function (strs) { let splited = strs.map((el) => el.split("")); let first = splited[0]; let ans = ""; for (let i = 0; i < first.length; i++) { let temp = first[i]; let check = true; if (temp === undefined).. 2022. 12. 12.
[error] Component definition is missing display name useMemo 와 유사한 기능인 React 라이브러리의 memo 함수를 사용해보던 중 일어난 에러다 eslint 에서 또 한소리 하셨다 에러 원인 아래의 예처럼 React.memo 를 변수 Child에 저장하고 해당 변수를 console.log 로 찍어보면 const Child = memo(() => { console.log("재랜더링"); return 자식이래요; }); console.log(Child); 요런 객체를 확인 가능하다 memo 를 사용하면 위 그림의 displayName 속성에 memo 함수의 인자로 넣은 익명함수들이 들어가게 된다! 근데 왜인지 모르겠지만 displayName 의 값은 클릭해서 확인해보면 undefined 로 뜨고 에러가 나온다 해결 방법 아래의 코드를 추가해준다 Chi.. 2022. 12. 7.
[react] state 는 setState 후 바로 수정되지 않는다! 컴포넌트에 클릭 시, check 라는 state 를 변경하는 버튼을 만들었다 근데... setCheck 수정 함수 뒤에 console.log 로 찍어보니 엥! 버튼 클릭 뒤에선 수정되지 않은 초기값 그대로잖아? 의심이 가는 부분이 있어서 useEffect 로 check 를 감시하여 콘솔로그로 찍어보았는데 useEffect 에는 check state의 변경이 제대로 적용이 되어있다 ??!! 아하? 그렇다! 저번에도 계속 말한 내용이지만 automatic Batching 에 의해서 바로 state 가 변경되지 않고, 컴포넌트 함수가 모두 실행되기 전까지는 state 변경 사항들을 적용하지 않는 것이다! state 가 변경 되고 나서야 useEffect 가 실행되어서 감시하는 state 가 있는지 등등의 us.. 2022. 12. 6.
[error] cannot update a component ('a') while rendering a different component ('b') 요건 정확히는 warning 이지만 eslint 사용자에게는 뭐 에러나 마찬가지다... 해결해야만 한다 해결도 해결이지만 왜 이 경고가 떴는지를 꼭 알고 넘어가자 에러 원인 하나의 상태에 여러 컴포넌트가 동시에 접근하여 상태가 꼬일수 있으니 해당 두 컴포넌트의 동시 랜더링은 안됩니다! 랜더링 후에 상태를 조작하여 조작한 상태를 바탕으로 랜더링이 되도록 상태 조작은 랜더링 이후로 미뤄주세요! 하나의 상태를 공유하는 두 컴포넌트가 랜더링 될 때, 한 컴포넌트에서 상태 변경이 일어나면 변경된 상태를 가지고 다른 컴포넌트도 동시에 랜더링 할 수 없으므로, 되도록 랜더링이 끝난 다음에 문제의 상태를 조작해서 다른 컴포넌트가 다음 순서로 랜더링 되도록 해주라는 warning 이다. - 내멋대로 이해입니당! 해결 방.. 2022. 12. 4.