본문 바로가기

728x90
반응형

프로그래밍&IT/React & CSS

(38)
[Fast Campus , React] 15. React useCallback & useMemo useCallback을 이용한 함수 최적화 원래 컴포넌트가 렌더링 될 때 그 안에 있는 함수도 다시 만들게 된다. 똑같은 함수를 컴포넌트가 렌더링 된다고 해서 계속 다시 만드는 것은 좋은 현상은 아니다. 만약 이 함수가 자식 컴포넌트에 props로 내려준다면 함수를 포함하고 있는 컴포넌트가 리렌더링 될 때마다 자식컴포넌트도 함수가 새롭게 만들어지니 계속 리렌더링 하게 된다. React.memo를 사용해도 리렌더링 되는 현상이 발생하기 함. React.useCallback 메모이제이션된 함수를 반환하는 함수 useCallback안에 콜백함수와 의존성 배열을 순서대로 넣어주면 된다 함수 내에서 참조하는 state, props가 있다면 의존성 배열에 추가해 주면 된다. useCallback으로 인해 의존성 배..
[Fast Campus , React] 14. React.memo를 이용한 성능 최적화 React.memo를 이용한 성능 최적화 전에 사용한 A, B컴포넌트 비교 소스를 기준으로 성능 체크 및 개선목표. [Fast Campus , React] 13. 확장프로그램, 성능측정 app 개발 B컴포넌트의 문제점? List, ListItem, Message 컴포넌트로 나뉘어 있는데, 재사용성의 목적도 있지만 각 컴포넌트의 렌더링의 최적화를 위해서이기도 함. Input에서 글을 쓸 때 원래는 Message 컴포넌트와 그 State를 가지고 있는 App 컴포넌트만 렌더링이 되어야 하는데, 상관이 없는 다른 부분까지 렌더링 되고 있다. React.memo 적용. 원하는 컴포넌틀르 React.memo로 감싸주면 적용이 된다 const Message = React.memo( ({message}) => { r..
[Fast Campus , React] 13. 확장프로그램, 성능측정 app 개발 리액트 개발할 때 유용한 확장프로그램 다운로드 크롬 웹스토어에서 다운로드 가능. 링크 브라우저 개발자 도구에서 React컴포넌트 트리를 검사할 수 있다 리액트 프로파일러 (React profiler) React 16.5에서 새로운 DevTools 플러그인에 대한 지원 추가. React의 Profiler API를 사용해서 React 애플리케이션의 성능병목현상을 식별하기 위해 렌더링 되는 각 구성요소에 대한 타이밍 정보를 수집 가짜 데이터 가져오기 어느정도 많은 데이터가 있을 시에 측정이 가능하기에, 가짜 데이터를 전달해 주는 곳에 요청을 보내서 받아오는 것도 필요 useEffect 컴포넌트가 렌더링될때 특정 작업을 실행할 수 있도록 하는 hook 여기선 App캠포넌트가 한번 렌더링 된 후에 jsonplac..
[Fast Campus , React] 12. TicTacToe 앱 만들기 (6) JSX key , jumpTo함수 JSX key 속성 리액트에서 요소의 리스트를 나열할때는 key를 넣어야한다. React가 변경,추가,제거된 항목 식별하는데 도움이 된다. 요소에 안정적인 ID를 부여하려면 배열 내부의 요소에 키를 제공해야 한다. 리액트는 가상돔을 이용해서 바뀐 부분만 실제 돔에 적용 key를 이용해서 어떠한 부분이 바뀌었는지 인식할 수 있다. key에는 유니크한 값을 넣어준다. (index는 비추천) 만약 리스트가 추가되거나 제거되면 해당 리스트의 key값도 바뀔수 있기 JumpTo 함수 작성 현재 몇 번째 스텝이지 알수있는 state 생성하기. 이전으로 되돌아갔을때 그 step을 기억하기 위해 const [stepNumber, setStepNumber] = useState(0); stepNumber를 업데이트위해 j..
[Fast Campus , React] 11. TicTacToe 앱 만들기 (6) history 저장, 전개연산자(spread operator) 동작에 대한 기록 저장 slice()를 사용해 매 동작 이후에 squares 배열의 새로운 복사본을 만들었고 이를 불변 객체로 취급했음. 이를 통해 과거의 squares배열의 모든 버전을 저장하고 이미 지나간 차례를 탐색할 수 있다. const handleClick = (i) => { const newSquares = squares.slice(); // slice로 통째 복사 과거의 squares 배열들을 history라는 다른 배열에 저장할 것이며, history배열은 첫 동작부터 마지막 동작까지 모든 게임판의 상태를 아래같이 표현. 이전 동작에 대한 리스트를 보여주려면 최상위 단계의 App 컴포넌트가 필요. App 컴포넌트에 history state를 이동. state를 App컴포넌트로 이동 cons..
[Fast Campus , React] 10. TicTacToe 앱 만들기 (5) 순서 체크 및 O,X 교체 표시 / 승자 결정 / 다시 두기 방지 플레이어의 순서 체크 컴포넌트에 초기 state를 수정하는 것으로 기본값을 설정할 수 있다. Board.js - 플레이어가 수를 둘 때마다 다음 플레이어가 누군지 결정하는 state를 저장 위해서 그리고, 두는 순서에 따른 표시 [ X , O ] 교체를 위한 수 const [xIsNext, setXIsNext] = useState(true); const handleClick = (i) => { const newSquares = squares.slice(); // slice로 통째 복사 newSquares[i] = xIsNext ? "X" : "O"; setSquares(newSquares); setXIsNext(current => !current); 삼항연산자 사용해서, 중첩 if를 쓰지 않고, 한 줄에..
[Fast Campus , React] 9. React Hooks, functional 컴포넌트 사용하기 React Hooks? ReactConf 2018에서 발표된, class 없이 state를 사용할 수 있는 새로운 기능. class component로 사용되어온 react에서 느껴온 불편함을 해결하기 위해 개발. React Hooks는 Functional Component를 사용함. 함수형 컴포넌트에선 어떤 기능을 못 쓰는가? 중요한 생명주기를 함수형 컴포넌트에선 사용을 못 했다. → 이것은 React 16.8 Hooks 업데이트로 변경됨 이로 인해 함수형 컴포넌트도 생명주기를 사용할 수 있기에 데이터를 가져오고, 컴포넌트 시작하자 API호출 등 많은 부분을 할 수 있게 되었다. 컴포넌트에서 생명주기를 사용하는 부분 class component에서 사용하던, componentDidMount, Compo..
[Fast Campus , React] 8. TicTacToe 앱 만들기 (4) 이벤트 변화, 불변성 (stack, heap 메모리) 이벤트 변화 무언가를 "기억하게" 만들어 "뭔가 (X)"를 표시하려 한다. 이때 component는 state를 사용하게 된다 Square클릭할 때, 호출할 함수생성 (Board.js) handleClick(i) { const square = this.state.squares.slice(); // slice로 통째 복사 squares[i] = 'X'; this.setState({squares: squares}); } Array.prototype.slice() 어떤 배열의 begin부터 end까지 (end미포함)에 대한 얕은 복사본을 새로운 배열객체로 반환. 원본배열은 바뀌지 않는다. 위에서 만든 함수를 props로 Square컴포넌트에 전달 ( Board.js) renderSquare(i) { retur..
[Fast Campus , React] 7. TicTacToe 앱 만들기 (3) - super / props & state 자바스크립트에서 super 자식 클래스 내에서 부모 클래스의 생성자를 호출할 때 사용된다 자식클래스 내에서 부모클래스의 메서드를 호출할 때 사용된다. super([인자값]); // 부모 생성자 호출 super.functionOnParent([인자값]); super이후에 this 키워드 생성자에선 super키워드 하나만 사용되거나, this키워드가 사용되기 전에 호출되어야 한다 super이후에 this가 나와야 하는 이유 부모클래스의 생성자를 호출하기 전 this. 변숫값을 사용하려 하면 문제 발생 React에서 this.state를 생성자에서 정의할 때 super가 먼저 와야 하는 것도 같은 이유 React에서 super에 props를 인자로 전달해야 하는 이유 React.Component객체가 생성될 ..
[Fast Campus , React] 6. TicTacToe 앱 만들기 (2) - props, state Pros를 통해 컴포넌트 간에 데이터를 전달하기 Props : Properties의 줄임말 Props는 상속하는 부모 컴포넌트로부터 자녀 컴포넌트에 데이터 등을 전달하는 방법 읽기 전용 (immutable)으로 자녀 컴포넌트 입장에선 변하지 않는다 (변하게 하고자 하면 부모 컴포넌트에서 state를 변경시켜줘야 한다 1. 상위 컴포넌트가 임의이 이름으로 (여기선 value) props 설정하고 하위 컴포넌트에 값 설정 export default class Board extends Component { renderSquare(i) { return } render() { const status = "Next Player: X"; return ( {status} {this.renderSquare(0)} {th..

반응형