• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 리액트 버전 업데이트 질문드립니당

리액트 버전 업데이트 질문드립니당

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #62309

    이미현
    참가자
    안녕하세요 코딩애플님 강의봐가며 리액트로 웹개발 시작한 6개월차 신입개발자 입니다. 
    
    현재 안건에서 쓰는 리액트버전이 15.6.1인데 이번에 최신버전 v18.2.0로 업데이트하는 미션이 떨어졌는데어떻게 헤쳐나가야할지 너무 답답해서 고민끝에 질문드립니다...
    현재 안건의 스펙입니다. 
    ・안건종류: 데이트 매칭 어플
    ・메인언어: react
    ・상태관리: redux
    ・프레임워크 : koa
    ・미들웨어: redux-thunk
    
    ======== 개요 ========
    일단 검색으로는 잘 정리된곳 찾기가 어려워서 리액트공식문서와 책 위주로 참고해서 정리중인데요, 
    우선 큰 틀을 짜고 문제점들을 세분화하면서 틀을 좁혀가려고합니다..
    
    1. react, react-dom 최신버전 인스톨후
    2. 에러를 우선순위별로 리스트화 하기
    ・ReactDOM.render is no longer supported in React 18. Use createRoot instead.
    ・Warning: componentWillMount has been renamed, and is not recommended for use.
    ・componentWillReceiveProps has been renamed
    ・You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection
    3. 공동작업을 위한 규칙 리스트화 하기 
    ・class 컴포넌트 → function 컴포넌트로 변경
    ・life cycle → useEffect 로 처리, 또는 커스텀 hook
    ・react-redux 의 connect 함수 → useSelector, useDispatch Hooks로 리덕스와 컴포넌트 연동
    ・state 업데이트시 불변성을위한 spread 연산자, immer 사용
    ・코드 스플리팅: 라우팅에 React.lazy or Suspense 적용
    ・react-redux 디렉토리 구조: 일반구조(component, container, reducer)-> ducks 패턴 사용해서 파일 모듈화
    4. 의존중인 라이브러리및 패키지 업데이트 
    5. 2와 3을 진행하며 기타 에러를 해결
    
    ======== 질문 ========
    1. 3번의 [공동작업을 위한 규칙 리스트화]의 경우, 검색과 에러기준으로 만들고있는데 너무 부족한것같습니다. 
    프로젝트 버전 업그레이드시, 기준이 되는 컨텐츠가 있는지 궁금합니다.
    2. 현재 리액트 구버전 15부터 16,17,18 최신버전까지의 모든 업데이트 변경점을 체크해서 일일이 적용해야하는지(←React공식문서블로그에서), 단순히 15->18로 점프해서 바뀐사항만 적용해도되는지
    3. 현재 구버전에서 사용중인 각종 패키지, 라이브러리 업데이트는 어떤 방향으로 진행해야할지-> 이부분이 제일 손대기 어려울정도로 막막합니다. 리액트버전업뎃처럼 똑같이 최신버전인스톨, 에러체크, 버전별 변경점 체크후 적용및 수정 하면 될까요?
     
    입사 3개월차에 선배나 가이드없이 진행중이라 정말 고민끝에 질문드립니다…
    혹시 시간나실때 답변이나 조언해주시면 정말 감사하겠습니다……(살려주세요…..)
    잘부탁드려요 ! (제발 구원의 손길을 ㅠㅠㅠ)
    
    package.json (react만 최신인스톨)
    "dependencies": {
        "@paypal/paypal-js": "4.1.0",
        "babel-runtime": "^6.25.0",
        "chart.js": "^2.6.0",
        "classnames": "^2.2.3",
        "es6-promise": "^4.1.1",
        "exif-js": "^2.2.1",
        "firebase": "^7.7.0",
        "history": "^3.3.0",
        "koa": "^1.2.0",
        "koa-static": "^2.0.0",
        "lodash.reverse": "^4.0.1",
        "lodash.sortby": "^4.5.0",
        "lodash.throttle": "^4.0.0",
        "lodash.uniqby": "^4.5.0",
        "moment": "^2.17.0",
        "moment-timezone": "^0.5.13",
        "node-fetch": "^2.6.6",
        "normalizr": "^2.3.0",
        "object-assign": "^4.0.1",
        "pm2": "^2.6.1",
        "prop-types": "^15.5.10",
        "react": "^18.2.0",
        "react-chartjs-2": "^2.5.6",
        "react-dom": "^18.2.0",
        "react-ga": "^2.1.2",
        "react-helmet": "^5.1.3",
        "react-infinite-scroller": "^1.2.4",
        "react-redux": "^5.0.2",
        "react-router": "^3.0.5",
        "react-router-redux": "^4.0.1",
        "react-router-scroll": "^0.4.1",
        "react-scroll": "1.5.4",
        "react-slick": "^0.14.5",
        "react-swipeable": "^4.0.1",
        "react-textarea-autosize": "^5.0.6",
        "redux": "^3.7.2",
        "redux-actions": "^2.2.1",
        "redux-api-middleware": "^1.0.3",
        "redux-logger": "^3.0.6",
        "redux-thunk": "^2.4.0"
      },
      "devDependencies": {
        "babel-cli": "^6.7.5",
        "babel-eslint": "^8.2.3",
        "babel-plugin-espower": "^2.3.1",
        "babel-plugin-module-resolver": "^4.1.0",
        "babel-plugin-transform-async-to-generator": "^6.24.1",
        "babel-plugin-transform-class-properties": "^6.6.0",
        "babel-plugin-transform-export-extensions": "^6.22.0",
        "babel-plugin-transform-object-rest-spread": "^6.23.0",
        "babel-plugin-transform-runtime": "^6.15.0",
        "babel-preset-es2015": "^6.6.0",
        "babel-preset-react": "^6.3.13",
        "babel-register": "^6.7.2",
        "babelify": "^7.3.0",
        "browserify": "^13.0.0",
        "css-mqpacker": "^6.0.1",
        "csswring": "^6.0.0",
        "envify": "^4.1.0",
        "eslint": "^4.19.1",
        "eslint-config-tapplint": "^2.0.1",
        "eslint-config-tapplint-react": "^1.0.0",
        "eslint-plugin-react": "7.4.0",
        "gulp": "^3.9.0",
        "gulp-consolidate": "^0.2.0",
        "gulp-htmlmin": "^3.0.0",
        "gulp-iconfont": "^8.0.0",
        "gulp-imagemin": "^3.3.0",
        "gulp-notify": "^3.0.0",
        "gulp-plumber": "^1.0.1",
        "gulp-postcss": "^6.4.0",
        "gulp-rename": "^1.2.2",
        "gulp-sketch": "^1.0.5",
        "gulp-sourcemaps": "^2.0.0",
        "husky": "^0.14.3",
        "karma": "^1.1.0",
        "karma-browserify": "^5.0.5",
        "karma-chrome-launcher": "^2.2.0",
        "karma-mocha": "^1.0.1",
        "karma-mocha-reporter": "^2.0.3",
        "lint-staged": "^7.2.2",
        "lodash": "^4.11.1",
        "md5-file": "^4.0.0",
        "mocha": "^3.5.0",
        "postcss": "^5.2.17",
        "postcss-cssnext": "^3.1.1",
        "postcss-import": "^10.0.0",
        "postcss-media-variables": "^2.0.0",
        "postcss-nesting": "^2.3.1",
        "power-assert": "^1.4.4",
        "react-addons-test-utils": "~15.6.0",
        "react-prefixr": "^0.1.0",
        "require-dir": "^0.3.2",
        "stylelint": "^7.13.0",
        "stylelint-config-standard": "^16.0.0",
        "stylelint-order": "^0.5.0",
        "tapplint": "^0.9.0",
        "terser": "^4.6.11",
        "uglifyify": "^5.0.2",
        "watchify": "^3.7.0",
        "yargs": "^6.0.0"
      }
    
    #62337

    codingapple
    키 마스터
    리액트 공식홈페이지같은데에 migrate 가이드 이런거 보고 합니다  
    거의 다시 작성하는거랑 다를바가 없을텐데 새로프로젝트 만들어서 다시 작성하는게 더 빠를 수 있습니다 
    외부 라이브러리 버전 업데이트는 굳이 필요없을 수 있습니다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠