Slide 1

Slide 1 text

THE LIFE AND TIMES OF A REACT COMPONENT The React Component Lifecycle

Slide 2

Slide 2 text

HZDG.COM MATTHEWWITHANM MATTHEW DAPENA-TRETTER [email protected] HZDG

Slide 3

Slide 3 text

THE VIRTUAL DOM

Slide 4

Slide 4 text

DOM ELEMENTS?
  • Text Content

Slide 5

Slide 5 text

DOM ELEMENTS! align onautocompleteerror onautocomplete onwaiting onvolumechange ontoggle ontimeupdate onsuspend onsubmit onstalled onshow onselect onseeking onseeked onscroll onresize onreset onratechange onprogress onplaying onplay onpause onmousewheel onmouseup onmouseover onmouseout onmousemove onmouseleave onmouseenter onmousedown onloadstart onloadedmetadata onloadeddata onload onkeyup onkeypress onkeydown oninvalid oninput onfocus onerror onended onemptied ondurationchange ondrop ondragstart ondragover ondragleave ondragenter ondragend ondrag ondblclick oncuechange oncontextmenu onclose onclick onchange oncanplaythrough oncanplay oncancel onblur onabort spellcheck isContentEditable contentEditable outerText innerText accessKey hidden webkitdropzone draggable tabIndex dir translate lang title childElementCount lastElementChild firstElementChild children onwebkitfullscreenerror onwebkitfullscreenchange nextElementSibling previousElementSibling onwheel onselectstart onsearch onpaste oncut oncopy onbeforepaste onbeforecut onbeforecopy shadowRoot dataset classList className outerHTML innerHTML scrollHeight scrollWidth scrollTop scrollLeft clientHeight clientWidth clientTop clientLeft offsetParent offsetHeight offsetWidth offsetTop offsetLeft localName prefix namespaceURI id style attributes tagName parentElement textContent baseURI ownerDocument nextSibling previousSibling lastChild firstChild childNodes parentNode nodeType nodeValue nodeName click getAttribute setAttribute removeAttribute getAttributeNode setAttributeNode removeAttributeNode getElementsByTagName hasAttributes getAttributeNS setAttributeNS removeAttributeNS getElementsByTagNameNS getAttributeNodeNS setAttributeNodeNS hasAttribute hasAttributeNS matches focus blur scrollIntoView scrollIntoViewIfNeeded getElementsByClassName insertAdjacentElement insertAdjacentText insertAdjacentHTML webkitMatchesSelector createShadowRoot getDestinationInsertionPoints getClientRects getBoundingClientRect requestPointerLock animate remove webkitRequestFullScreen webkitRequestFullscreen querySelector querySelectorAll ALLOW_KEYBOARD_INPUT insertBefore replaceChild removeChild appendChild hasChildNodes cloneNode normalize isSameNode isEqualNode lookupPrefix isDefaultNamespace lookupNamespaceURI compareDocumentPosition contains ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE DOCUMENT_POSITION_DISCONNECTED DOCUMENT_POSITION_PRECEDING DOCUMENT_POSITION_FOLLOWING DOCUMENT_POSITION_CONTAINS DOCUMENT_POSITION_CONTAINED_BY DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC addEventListener removeEventListener dispatchEvent

Slide 6

Slide 6 text

REACT ELEMENTS
  • Text Content

Slide 7

Slide 7 text

JSX IS NOT HTML

Slide 8

Slide 8 text

REACT ELEMENTS React.DOM.ul( {className: 'my-list'}, React.DOM.li( 'Text Content' ) )

Slide 9

Slide 9 text

REACT COMPONENTS

Slide 10

Slide 10 text

f() : ReactElement

Slide 11

Slide 11 text

COMPONENTS React.createClass({ render: function() { return ( Hello {this.props.name} ); } });

Slide 12

Slide 12 text

THE COMPONENT LIFECYCLE

Slide 13

Slide 13 text

1. MOUNTING 2. UPDATING 3. UNMOUNTING

Slide 14

Slide 14 text

Render UNMOUNTING MOUNTING UPDATING Prop/State Changes Removal

Slide 15

Slide 15 text

• componentWillMount() • componentDidMount() • componentWillReceiveProps() • shouldComponentUpdate() • componentWillUpdate() • componentDidUpdate() • componentWillUnmount()

Slide 16

Slide 16 text

React.createClass({ render: function() { return ( Hello {this.props.name} ); }, componentWillMount: function() { } });

Slide 17

Slide 17 text

Render UNMOUNTING MOUNTING UPDATING Prop/State Changes Removal

Slide 18

Slide 18 text

React.render( element : ReactElement, container : DOMElement, [callback : function] ) : ReactComponent

Slide 19

Slide 19 text

React.renderToString( element : ReactElement ) : string

Slide 20

Slide 20 text

React.createClass({ render: function() { return ( ); } });

Slide 21

Slide 21 text

• componentWillMount() • componentDidMount() • componentWillReceiveProps() • shouldComponentUpdate() • componentWillUpdate() • componentDidUpdate() • componentWillUnmount()

Slide 22

Slide 22 text

• Called once per component instance • Only lifecycle method called on the server (React.renderToString) • Name is somewhat misleading • componentDidMount() isn’t necessarily called after • Think “constructor” componentWillMount()

Slide 23

Slide 23 text

• Called once per component instance • Only invoked on client (React.render()) • First time DOM node is available (via this.getDOMNode()) • Use for interacting with browser APIs or JS frameworks • jQuery • XHR componentDidMount()

Slide 24

Slide 24 text

Render UNMOUNTING MOUNTING UPDATING Removal Prop/State Changes

Slide 25

Slide 25 text

element.setProps( nextProps : object, [callback : function] )

Slide 26

Slide 26 text

element.replaceProps( nextProps : object, [callback : function] )

Slide 27

Slide 27 text

element.setState( nextState : object, [callback : function] )

Slide 28

Slide 28 text

Slide 29

Slide 29 text

• componentWillMount() • componentDidMount() • componentWillReceiveProps() • shouldComponentUpdate() • componentWillUpdate() • componentDidUpdate() • componentWillUnmount()

Slide 30

Slide 30 text

• Called when component is receiving new props • Provides a chance to update state in response to a prop change without triggering an extra render • Optimization over calculating state each render componentWillReceiveProps(nextProps : object)

Slide 31

Slide 31 text

• Invoked before rendering when new props or state are being received • Provides a chance to cancel rendering shouldComponentUpdate(nextProps : object, nextState : object) : boolean

Slide 32

Slide 32 text

• Invoked before DOM is updated • Provides a chance to store values before rendering for comparison in componendDidUpdate() • setState() can’t be used here • Probably the least-used lifecycle method componentWillUpdate(object nextProps, object nextState)

Slide 33

Slide 33 text

• Invoked after DOM update • Useful for triggering animations componentDidUpdate()

Slide 34

Slide 34 text

Render UNMOUNTING MOUNTING UPDATING Prop/State Changes Removal

Slide 35

Slide 35 text

React.unmountComponentAtNode( container : DOMElement ) : boolean

Slide 36

Slide 36 text

Slide 37

Slide 37 text

Slide 38

Slide 38 text

• componentWillMount() • componentDidMount() • componentWillReceiveProps() • shouldComponentUpdate() • componentWillUpdate() • componentDidUpdate() • componentWillUnmount()

Slide 39

Slide 39 text

• Invoked before component is unmounted from DOM • “cleanup” hook • Remove timers • Abort XHR • Cancel tweens • Remove event listeners componentWillUnmount()

Slide 40

Slide 40 text

Render UNMOUNTING MOUNTING UPDATING Prop/State Changes Removal

Slide 41

Slide 41 text

HZDG.COM MATTHEWWITHANM MATTHEW DAPENA-TRETTER [email protected] HZDG