w *UIJOLUIFSFBTPONBOZQFPQMFVTF3FBDUJT/05B QFSGPSNBODF w 'PSQSFEJDUBCMF6*NBOBHFNFOUCZl%FDMBSBUJWFBOEQVSF $PNQPOFOUzBOEl&YQMJDJUEBUBqPXzXJUIMFTT QFSGPSNBODFEFHSBEBUJPO w 1SPWJEJOHFTDBQFIBUDIFT 8IZ3FBDU
w :PVDBODSFBUFNPTUDPNQPOFOUTBT4UBUFMFTT'VODUJPO $PNQPOFOUT 4'$
w 4'$EPFTO`UIBTBCBDLJOHJOTUBODF w /PTUBUF
/PMJGFDZDMFNFUIPET
/PSFGT w 1FSGPQUJNJTBUJPOTGPS4'$XJMMCFJOUIFGVUVSF 4UBUFMFTT'VODUJPO$PNQPOFOUT const Item = ({item}) => (
w 3FBDUDSFBUF$MBTTGFFMTPVUEBUFE w *UIBTGFBUVSFTUIBUJTDPOWFOJFOUGPSEFWFMPQFST w NJYJOH)JHI0SEFS$PNQPOFOUT w BVUPCJOEJOH&4$MBTT'JFMET4UBUJD1SPQFSUJFT w *UNBZCFDPNFBTFQBSBUFQBDLBHF 3FBDUDSFBUF$MBTT class Button extends React.Component { onClick = () => this.setState({count: this.state.count + 1}); } Stage1
XIZEJEZPVVQEBUF w IUUQTHJUIVCDPNHBSCMFTXIZEJEZPVVQEBUF w zJGEFpOFB$PNQPOFOUIBTDPNQPOFOU%JE6QEBUF
UIF XIZEJEZPVVQEBUFXJMMOPUXPSLz import React from ‘react’; import {whyDidYouUpdate} from 'why-did-you-update'; whyDidYouUpdate(React); // monkey patches for React
w &4-JOUIFMQTZPVUPDSFBUF3FBDU$PNQPOFOUT w FTMJOUQMVHJOSFBDU w 3FBDUTQFDJpDMJOUJOHSVMFTGPS&4-JOU w IUUQTHJUIVCDPNZBOOJDLDSFTMJOUQMVHJOSFBDU w FTMJOUQMVHJOKTYBZ w 4UBUJD"45DIFDLFSGPSBDDFTTJCJMJUZSVMFTPO+49FMFNFOUT w IUUQTHJUIVCDPNFWDPIFOFTMJOUQMVHJOKTYBZ &4-JOU3FBDU
w :PVTIPVMEXBUDISFBDUKTDPSFOPUFT w 3FBDUXJMMSFMFBTFOFXNJOPSPSQBUDIWFSTJPOTFWFSZUXP XFFLT w 5PBEPQU&NCFSMJLF3'$QSPDFTT w &YQFSJNFOUJOHXJUI4UZMF4IFFUDSFBUF POUIFXFC w /FX3FDPODJMFS w 3FBDU$PSFJTNPSFTJNQMFS 'VUVSF