React, immer IE 지원 세팅

Yohiz·2021년 5월 22일

우선 IE에서 React app이 동작하게 하기 위해서는 pollifill이란 것이 필요한데, 설정하는 법은 간단하다.

우선 react-app-polyfill을 설치하고,

yarn add react-app-polyfill

index.js 파일 최상단에 아래와 같은 코드를 추가해 주면 된다.

import 'react-app-polyfill/ie9'; //또는 polyfill/ie11
import 'react-app-polyfill/stable';

그런데 나의 경우엔 이 세팅을 하고서도 추가적인 에러가 있어서 좀 더 세팅이 필요했다.
object.repeat이 함수가 아니라는 에러 등의 다양한 에러 때문에

yarn add core-js regenerator-runtime

을 설치하고 index.js파일에

import 'core-js/stable';
import 'regenerator-runtime/runtime';
import 'core-js/features/string/repeat';

도 추가해 주었으며,
window.scrollTo 도 작동하지 않아서 그 코드를 사용한 곳 마다 수정해주었다.

//1
useEffect(() => {
    window.scrollTo({
      top: 0,
      left: 0,
      behavior: 'smooth'
    });
  }, [pathname]);
  
 //2
commentRef.current.scrollTo(0, commentRef.current.scrollHeight);
    setCount((prev) => prev + 1);
  

이렇게 위와 같이 작성했던 코드들을

//1
useEffect(() => {
    window.scrollTo(0, 0, { behaviour: 'smooth' });
  }, [pathname]);
  
//2
commentRef.current.scrollTop = 
commentRef.current.scrollHeight;
commentRef.current.scrollLeft = 0;

이렇게 변경했다.

마지막으로 immer가 작동하지 않아서 immer을 사용한 곳 마다

import { enableAllPlugins } from 'immer';
enableAllPlugins();
import { produce } from 'immer';

이렇게 해주었다.

처음에는 index.js의 polyfill 바로 아래다 한번만 작성했었는데, 에러가 해결되지 않아서 produce가 사용된 모든 장소에 위와같은 방법을 사용했다.
필요에 따라 enableAllPlugins(); 대신에 enableES5()만 해주어도 된다.

profile
React를 사용하는 웹개발자 입니다.

0개의 댓글