Submit Search
React principle
0 likes
46 views
J
jongho jeong
- Why use react - React Fiber
Engineering
Read more
1 of 31
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
More Related Content
PDF
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
PDF
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Dong Chan Shin
PPT
Clojure development environment
EunPyoung Kim
PPTX
Clojure programming study_00
EunPyoung Kim
PDF
Django의 배신(주니어 개발자의 Django 삽질기)
Eunhyang Kim
PDF
스타트업 인턴 개발자 3달간의 고군분투기 김은향
Eunhyang Kim
PDF
Docker registry swift_junojunho
Junho Kim
PPTX
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
월간 IT 슬라이드
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Dong Chan Shin
Clojure development environment
EunPyoung Kim
Clojure programming study_00
EunPyoung Kim
Django의 배신(주니어 개발자의 Django 삽질기)
Eunhyang Kim
스타트업 인턴 개발자 3달간의 고군분투기 김은향
Eunhyang Kim
Docker registry swift_junojunho
Junho Kim
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
월간 IT 슬라이드
What's hot
(20)
PDF
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
CONNECT FOUNDATION
PDF
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Dong Chan Shin
PDF
대신 귀여운 리눅스를 드리겠습니다
RangHo Lee
PDF
파이콘 한국 2015 디자인 후기
Hyun-woo Park
PPTX
C++과 Lua script연동
선협 이
PPTX
PHP와 함께 한 개발 성장기
종훈 박
PDF
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
Eunhyang Kim
PDF
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
PDF
개발하긴 싫지만 코딩은 하고싶어
Eunhyang Kim
PDF
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
PDF
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
CONNECT FOUNDATION
PPTX
MFC 발견 (1)
종훈 박
PDF
In c
park sungmin
PDF
M5 6 1
nexthw
PDF
C++ try catch 어디까지 가봤니
Dong Chan Shin
PDF
격변하는 프로그래밍 언어, 이제는 Let it go
Chris Ohk
PDF
라이트닝 토크 2015 파이콘
Jiho Lee
PDF
Ruby_01_Ruby Basic
team air @ Dimigo
PDF
Doxygen 사용법
YoungSu Son
PDF
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Eunchong Yu
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
CONNECT FOUNDATION
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Dong Chan Shin
대신 귀여운 리눅스를 드리겠습니다
RangHo Lee
파이콘 한국 2015 디자인 후기
Hyun-woo Park
C++과 Lua script연동
선협 이
PHP와 함께 한 개발 성장기
종훈 박
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
Eunhyang Kim
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
개발하긴 싫지만 코딩은 하고싶어
Eunhyang Kim
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
CONNECT FOUNDATION
MFC 발견 (1)
종훈 박
In c
park sungmin
M5 6 1
nexthw
C++ try catch 어디까지 가봤니
Dong Chan Shin
격변하는 프로그래밍 언어, 이제는 Let it go
Chris Ohk
라이트닝 토크 2015 파이콘
Jiho Lee
Ruby_01_Ruby Basic
team air @ Dimigo
Doxygen 사용법
YoungSu Son
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Eunchong Yu
Ad
Similar to React principle
(20)
PDF
웹 본격적으로 배우기 전 감 잡기 - 1
mangonamu
PDF
Slipp 발표 자료 20151212
Jinsoo Jung
PDF
131 deview 2013 yobi-채수원
NAVER D2
PDF
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Suwon Chae
PDF
프리랜서 1년간 겪은 Go
석규 조
PDF
Spring Boot 1
경륜 이
PPTX
회사에서 새로운 기술_적용하기
Dexter Jung
PPTX
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
Jeongsang Baek
PDF
JavaScript로 오픈소스를 해보자. bsJS
NAVER D2
PDF
Javascript everywhere - Node.js | Devon 2012
Daum DNA
PPTX
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
NAVER D2
PDF
Node.js in Flitto
SeungWoo Lee
PDF
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Sa-ryong Kang
PPTX
프론트엔드 개발자
jung kyunghwan
PDF
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Sungchul Park
PPTX
Github? linux? 이건 뭐지?
Suho Lee
PDF
Effective c++ chapter5 6_ 131039 신동찬
Dong Chan Shin
PDF
웹 Front-End 실무 이야기
JinKwon Lee
PPTX
Java 그쪽 동네는
도형 임
PPTX
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
MinGeun Park
웹 본격적으로 배우기 전 감 잡기 - 1
mangonamu
Slipp 발표 자료 20151212
Jinsoo Jung
131 deview 2013 yobi-채수원
NAVER D2
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Suwon Chae
프리랜서 1년간 겪은 Go
석규 조
Spring Boot 1
경륜 이
회사에서 새로운 기술_적용하기
Dexter Jung
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
Jeongsang Baek
JavaScript로 오픈소스를 해보자. bsJS
NAVER D2
Javascript everywhere - Node.js | Devon 2012
Daum DNA
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
NAVER D2
Node.js in Flitto
SeungWoo Lee
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Sa-ryong Kang
프론트엔드 개발자
jung kyunghwan
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Sungchul Park
Github? linux? 이건 뭐지?
Suho Lee
Effective c++ chapter5 6_ 131039 신동찬
Dong Chan Shin
웹 Front-End 실무 이야기
JinKwon Lee
Java 그쪽 동네는
도형 임
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
MinGeun Park
Ad
React principle
1.
React 그래서React는무슨라이브러리인가?
2.
npmtrend 떡상(githubrepostart5위!)
3.
참고 1위:freeCodeCamp(코딩교육관련) 2위:996icu(중국...개발자근무환경관련운동레포) 3위:vuejs(중국...) 4위:EbookFoundation/free-programming-books(코딩교육관련) "수량"에관련해서그들을이길수는없었다...
4.
나의시선... React는뭔가복잡한데,사용하기는쉽다
5.
사용자의눈은높아지고 기능은많아지고 화면은복잡해졌는데 UI를편하게만들고싶다 그래서React는뭘해주나...?
6.
많이하는오해 React는빠르다!? a.k.a직접DOM접근비용이큰데,virtualDOM을활용해서그걸빠르게~~ 이름의영향이있다고봅니다.Swift도뭔가엄청빨라보이잖아요
7.
; 선언형,컴포넌트기반,한번배워어디서나사용하기 코드만들기쉽게해준다는얘기.빠르다는말은없음
8.
그렇다면느린가? React는충분히빠르다 충분히안빠르면안씀
9.
파생된오해 VirtualDOM은빠르다? 썩그런것도아니다
10.
실제로React가하는것 1) tree구조를 가지는
element tree를 만들어 놓는다 2) 가지고 있던 tree가 업데이트 되면 무엇이 업데이트 되었는지 비교한다 3) 바뀐 부분만 실제 DOM에 업데이트 한다 뭘그릴지에만관심이있는라이브러리
11.
따라서, 잘조작한다면,실제DOM을직접조작하는게더빠르다. 모든라이브러리가마찬가지겠지만,하나의레이어가더생긴이상느려질수밖에없음. 하지만우리가필요한건생산성
12.
React는배우기쉽고,UI개발을효율적으로만들어줍니다. 배우기쉬운이유는라이브러리가제공하는기능의갯수가많지않기때문 React는적은수의기능을잘제공하는라이브러리
13.
const people =
{ name: '호종호호종' }; people.name = '호종'; vs const element = document.querySelector('#people'); element.name = '호종'; DOM도객체니어짜피둘다객체접근.그러므로큰차이없다
14.
가장비용이큰연산은 렌!더!링! 따라서바뀌어야할부분을최소한의비용으로바꿔야함(증분렌더링)
15.
React(와같은방식)가왜생산성을높여주나 버튼의가로사이즈를바꾸는코드 function changeWidth(width) { const
searchButton = document.querySelector('#search_btn'); searchButton.style.width = width; } changeWidth('100px');
16.
버튼의가로사이즈를바꾸는코드 const myObj =
{ target: document.querySelector('#search_btn'), style: { width: '5px', }, render() { this.target.style = { ...this.target.style, ...this.style, }; }, };
17.
... function changeWidth(width) { myObj.style.width
= width; myObj.render(); } changeWidth('100px'); - changeWidth 에서DOMapi에직접접근하지않는다.=>제어역전 -search_btn의상태를가지고있다가복원할수도있음 -개발자는데이터만바꾸면된다.그리는건myObj가알아서...
18.
React컴포넌트 const MyComponent: React.FC
= () => { const [title, setTitle] = useState('제목'); return <div>{title}</div>; };
19.
참고:JSXissyntacticsugar https://github.com/facebook/react/blob/master/packages/react/src/ReactElement.js#L146 const ReactElement =
function (type, key, ref, self, source, owner, props) { const element = { // This tag allows us to uniquely identify this as a React Element $$typeof: REACT_ELEMENT_TYPE, // Built-in properties that belong on the element type: type, key: key, ref: ref, props: props, // Record the component responsible for creating this element. _owner: owner, }; return element; };
20.
const MyComponent: React.FC
= () => { const [title, setTitle] = useState('제목'); return <div>{title}</div>; }; 1)title이라는값이있다.이title은setTitle을통해변경할수있다. 2)setTitle을호출하면MyComponent는render의목록에들어간다. 3)render목록에서현재프레임에표시되어야할값을계산한다. 4)이전과비교해서필요한부분만변경한다.
21.
React의core가하는일은tree간의비교를효율적으로수행하는것 따라서 React와 컴포넌트,상태관리등tree관리에필요한기능.(reconciliation) ReactDOM이분리되어있고, DOM에렌더링하는기능-render Reactnative와같은파생라이브러리도등장할수있는것
22.
좀더깊은내용...
23.
React의핵심은Reconciliation
24.
Reconciliation알고리즘 Recursive
25.
Recursive는 쪼갤수없다
26.
어떻게하면singlethread환경에서부드러운UI를표현할수있을까?
27.
ReactFiber
28.
ReactFiber에서Rendering의두단계 1.renderphase 무엇이더해질지,빠질지,변경될지결정하는단계 DOM에는아무런영향을끼치지않음 asynchronous. interrupt가가능하다 2.commitphase 실제로그리는단계 synchronous
29.
1.Lifecyclemethodscalledduringrenderphase: UNSAFE_componentWillMount() UNSAFE_componentWillReceiveProps() getDerivedStateFromProps() shouldComponentUpdate() UNSAFE_componentWillUpdate() render() 2.Lifecyclemethodscalledduringcommitphase: getSnapshotBeforeUpdate() componentDidMount() componentDidUpdate() componentWillUnmount()
30.
Fiber renderphase에서tree간비교를위한자료구조.마치react만의thread splitable,prioritize,rebase,andreuseworkinprogress child,sibling,return(parent)의ref를가지는mutablelinkedlist 비선점형멀티태스킹(cooperativescheduling,Mozilla의Quantum에서영향을받았다고함) 두컨텍스트(current와workinprogress)의fibertree를통해비교수행 linkedlist기반의DFS를수행 Fiber의구조,Fiber의스케쥴러
31.
끝 참고자료 https://velopert.com/3236 https://www.bsidesoft.com/8267 https://www.youtube.com/watch?v=ZCuYPiUIONs https://indepth.dev/posts/1007/the-how-and-why-on-reacts-usage-of-linked-list-in- fiber-to-walk-the-components-tree https://dzone.com/articles/understanding-of-react-fiber-architecture
Download