비동기 렌더링을 위한 자바스크립트 Concurrent Mode의 활용

지난 몇 년간 웹 애플리케이션의 성능을 향상시키기 위해 많은 노력이 기울여졌습니다. 이중에 중요한 요소는 페이지 로딩 시간을 최소화하고 사용자 경험을 향상시키는 것입니다. 이를 위해 React는 Concurrent Mode라는 새로운 기능을 도입하여 비동기 렌더링을 가능하게 했습니다.

Concurrent Mode란 무엇인가요?

Concurrent Mode는 React 18부터 도입된 새로운 렌더링 모드입니다. 이 모드에서 React는 렌더링을 중단하고 다른 작업에 우선순위를 부여하여 성능을 최적화합니다. 이는 사용자 인터랙션을 유연하게 처리하고 애플리케이션의 응답성을 향상시킵니다.

Concurrent Mode를 활용한 비동기 렌더링

Concurrent Mode를 이용하면 렌더링 작업을 세분화하여 적절한 우선순위로 작업을 처리할 수 있습니다. 이를 통해 사용자 인터랙션이 발생한 경우 즉각적으로 응답하고 우선순위가 낮은 작업은 백그라운드에서 처리할 수 있습니다.

import React from 'react';

function App() {
  const [data, setData] = React.useState(null);

  React.useEffect(() => {
    fetchData();
  }, []);

  async function fetchData() {
    const response = await fetch('https://api.example.com/data');
    const json = await response.json();
    setData(json);
  }

  return (
    <div>
      {data ? (
        <ul>
          {data.map(item => (
            <li key={item.id}>{item.name}</li>
          ))}
        </ul>
      ) : (
        <p>Loading data...</p>
      )}
    </div>
  );
}

export default App;

위 코드는 Concurrent Mode를 활용한 비동기 데이터 로딩 예시입니다. fetchData 함수를 useEffect 훅을 통해 실행하고, 데이터를 받아오면 화면에 렌더링합니다. 데이터가 로딩 중일 때는 Loading 메시지를 표시합니다.

결론

Concurrent Mode는 React 애플리케이션의 성능을 향상시키는 강력한 도구로써 비동기 렌더링을 가능하게 합니다. 이를 활용하여 사용자 경험을 향상시키고 로딩 시간을 최소화할 수 있습니다. React 18부터는 공식적으로 Concurrent Mode를 지원하므로, 적극적으로 활용해 보시기 바랍니다.

참고 자료

#react #concurrentmode