React

React - useRef 사용해 컴포넌트 안의 변수 만들기

Starters 2020. 9. 9. 20:27

useState 를 사용하면 값을 변경하고 관리할 수 있다. 하지만 값을 바꿀 때, 컴포넌트가 리렌더링 된다.

하지만 특정 상황에서는 리렌더링 할 필요가 없는 상황이 있음

=> useRef 사용

- 값이 바뀔 때 리렌더링 될 필요 없을 때

 

주로 아래와 같은 때에 쓰임

 

코드

 

기존 UserList()의 users 배열을 잘라내고 props로 받아온다.

import React from 'react';

function User({ user }){
  return (
    <div>
      <b>{user.username}</b><span>({user.email})</span>
    </div>
  );
}

function UserList( { users }){


  return (
    <div>
      {
        users.map(
          (user, index) => (<User user={user} key={index} />)
        )
      }
    </div>
  )
}

export default UserList;
import React, { useRef } from 'react';
import UserList from './UserList';

function App() {
  const users = [
    {
      id: 1,
      username: 'starters',
      email: 'public.starters@gmail.com'
    },
    {
      id: 2,
      username: 'tester',
      email: 'tester@gmail.com'
    },
    {
      id: 3,
      username: 'jajajojo',
      email: 'jajajojo@gmail.com'
    }
  ];

  const nextId = useRef(4);

  const onCreate = () => {
    // 나중에 id 가 4 인 값 조회 한다면
    console.log(nextId.current);

    // onCreate()를 사용하고
    // nextId값에 1을 더해줌
    // 이 값이 바뀐다고 해서 컴포넌트가 리렌더링 되진 않는다
    nextId.current += 1;
  }

  return (
    <UserList users={users}/>
  );
}

export default App;

 

 

 

React - 배열 렌더링

이렇게 나오게 할 때 비효율적인 방법 import React from 'react'; function UserList(){ const users = [ { id: 1, username: 'starters', email: 'public.starters@gmail.com' }, { id: 2, username: 'tester',..

startersdev.tistory.com