POSTD PRODUCED BY NIJIBOX

POSTD PRODUCED BY NIJIBOX

ニジボックスが運営する
エンジニアに向けた
キュレーションメディア

POSTD PRODUCED BY NIJIBOX

POSTD PRODUCED BY NIJIBOX

ニジボックスが運営する
エンジニアに向けた
キュレーションメディア

FeedlyRSSTwitterFacebook
Andrew Clark
React Fiber Architecture

(2016-08-19時点版)by Andrew Clark

本記事は、原著者の許諾のもとに翻訳・掲載しております。

初めに


React FiberReactReact2

React FiberReact Fiber  



FiberReactFiber



React  React

 Fiber 

Fiber  React





React Components, Elements, and Instances React

Reconciliation 調React

React Basic Theoretical Concepts ReactReact

React Design Principles ReactReact Fiber






調reconciliation
React使

update
React使 setState 

ReactAPIABBCCA

React  

DOMReact()1DOM setState 

Fiber React 


React

使


DOMReact1React NativeiOSAndroidDOM

ReactReact使

React DOMReact NativeReact

FiberFiber


scheduling


work
 setState 

React Design Principles 


Reactrender

React使React

ReactReact







UI



React


ReactReactFiber


Fiber

fiber


React FiberFiberFiber




FiberReact











fiberfiber  

 React 
v = f(d)

Reactfiber

  

UIUI

React NativeAPI requestIdleCallback  requestAnimationFrame API使

UI

React FiberFiberReactfiber  

    



fiber

fiber




fiberJavaScript

fiber

fiber

type  key


fibertypekeyReact使fiber2

fibertypetype div  span type

type v = f(d) 

typekeyfiber使

child  sibling


fiberfiber

child fiber render 
function Parent() {
  return <Child />
}

上記において、 Parent のchild fiberは、 Child に相当します。

siblingフィールドは、 render が複数のchildを返す(Fiberの新機能です)場合に使われます。

function Parent() {
  return [<Child1 />, <Child2 />]
}

child fiber1child Parent child Child1  Child1 sibling Child2 

child fiber  

return


return fiberfiberfiberparent fiber

fiberchild fiberchild fiberreturn fiberparent Child1  Child2 return fiber Parent 

pendingProps  memoizedProps


propsfiber pendingProps  memoizedProps 

 pendingProps  memoizedProps fiber

pendingWorkPriority


fiber ReactPriorityLevel 

0 NoWork 使fiber
function matchesPriority(fiber, priority) {
  return fiber.pendingWorkPriority !== 0 &&
         fiber.pendingWorkPriority <= priority
}

React Fiber

priority使

alternate


flush
fiberfiber

work-in-progress
fiber

fiber2fiberfiber

fiberalternatefiberfiberalternatefiber

fiberalternate cloneFiber 使 cloneFiber fiberalternate

alternate 

output


host component
React div  span JSX

fiberoutput

fiberoutputoutput  output

outputoutput


使




fiber







使

監修者
監修者_古川陽介
古川陽介
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
複合機メーカー、ゲーム会社を経て、2016年に株式会社リクルートテクノロジーズ(現リクルート)入社。 現在はAPソリューショングループのマネジャーとしてアプリ基盤の改善や運用、各種開発支援ツールの開発、またテックリードとしてエンジニアチームの支援や育成までを担う。 2019年より株式会社ニジボックスを兼務し、室長としてエンジニア育成基盤の設計、技術指南も遂行。 Node.js 日本ユーザーグループの代表を務め、Node学園祭などを主宰。