·ÖÏíweb¿ª·¢ÖªÊ¶

×¢²á/µÇ¼|×î½ü·¢²¼|½ñÈÕÍÆ¼ö

Ö÷Ò³ ITÖªÊ¶ÍøÒ³¼¼ÊõÈí¼þ¿ª·¢Ç°¶Ë¿ª·¢´úÂë±à³ÌÔËӪά»¤¼¼Êõ·ÖÏí½Ì³Ì°¸Àý
µ±Ç°Î»ÖãºÊ×Ò³ > ¼¼Êõ·ÖÏí

React.jsѧϰ֪ʶС½á£¨Ò»£©

·¢²¼Ê±¼ä£º2023-09-06 01:42ÔðÈα༭£ºÅíС·¼¹Ø¼ü´Ê£ºjsReact

ѧϰReactÒ²Óаë¸öÔÂÁ˰ɣ¬ÕâÀï¶ÔËùѧµÄ»ù´¡ÖªÊ¶×ö¸ö¼òµ¥µÄ×ܽᡣ×Ô¼ºÏÈÊǸú׏ٷ½ÎĵµÑ§£¬²î²»¶àѧÁËËÄÎåÌ죬Ҳ¸ú×ÅÈëÃŽ̳Ì×öÁËÒ»¸ö¼òµ¥µÄСÀõ×Ó¡£È»ºó¸ú×ÅÈîÒ»·åÀÏʦµÄ½Ì³ÌÉÏÊÖÁ˼¸¸öСDemo£¬ºóÀ´ÔÚÍøÉÏ·¢ÏÖÁËÒ»±¾ºÜºÃµÄÊéReact.jsСÊ飬×Ô¼º¶Ï¶ÏÐøÐøÒ²Ñ§Á˼¸Ì죬ÉÏÃæÒ²¼¸¸öʵսµÄСÏîÄ¿£¬¿ÉÒÔ¸ú×ÅÁ·Á·ÊÖ¡£
»°²»¶à˵£¬¾ÍÖ±½ÓÀ´×ܽá°É£¡

  • JSX
  • ×é¼þ
  • Çø·ÖpropsºÍstate
  • ÉúÃüÖÜÆÚº¯Êý
  • ʼþϵͳ
  • ¸ß½××é¼þ
  • React.jsµÄcontext
  • º¯Êýʽ±à³Ì
  • ʹÓÃPropTypes¼ì²éÀàÐÍ
  • refÊôÐÔºÍReact.jsÖеÄDOM²Ù×÷

JSX


JSXÆäʵÊÇÒ»¸ö±í´ïʽ£¬µ«ÊǾ­¹ý±àÒëÖ®ºó£¬JSX±í´ïʽ»á³ÉΪ³£¹æµÄJavaScript¶ÔÏ󣬿ÉÒÔÔÚJSXÖÐǶÈëÈκεÄJavaScript±í´ïʽ£¬·½·¨ÊÇ·ÅÔÚ»¨À¨ºÅÀïÃæ£¬»¹¿ÉÒÔ½«JavaScript±í´ïʽǶÈëµ½HTMLµÄÊôÐÔµ±ÖУ¬»¹ÓÐHTMLÊôÐÔÒ²ÊÇʹÓÃÍÕ·åʽÃüÃûµÄ·½·¨¡£
×¢Ò⣺ÕâÀïJSX·ÀÖ¹×¢Éä¹¥»÷£¬React DOM»áÔÚäÖȾ֮ǰ½«Ç¶ÈëÔÚJSXÖеÄÈκÎÖµ½øÐÐתÒ壬ÔÚ³ÊÏÖ֮ǰ£¬È«²¿×ª»»³É×Ö·û´®¡£
ÕâÀïÒý³öÁ½¸ö¸ö¹ØÓÚÃæÊÔµÄÎÊÌ⣿

  1. Ôõô½«Ò»¸öÀàËÆHTMLµÄJSX½á¹¹×ª»»³ÉÒ»¸öJavaScript¶ÔÏó
  2. Ϊʲô²»Ö±½Óͨ¹ýJSXµ½´ïDOMÔªËØÄØ£¬¶øÊÇҪͨ¹ýJSX-JavaScript¶ÔÏó-DOMÔªËØ-²åÈëÒ³Ãæ¡£
    Õë¶ÔµÚÒ»¸öÎÊÌ⣬ÐèÒªÏÈÁ˽âJSXµÄÔ­ÀíÎÊÌ⣬ÆäʵJSX¾ÍÊÇJavaScript¶ÔÏ󣬯äʵÿ¸öDOMÔªËØµÄ½á¹¹¶¼¿ÉÒÔÓÃJavaScript¶ÔÏóÀ´±íʾ£¬Ò»¸öDOMÔªËØ°üº¬µÄÐÅÏ¢ÆäʵֻÓÐÈý¸ö£º±êÇ©Ãû¡¢ÊôÐÔ¡¢×ÓÔªËØ¡£
{ ???tag: ¡®div¡®, ????attrs: { className: ¡®box¡®, id: ¡®content¡®}, ????children: [ ????????????????????????{ tag: ¡®div¡®, arrts: { className: ¡®title¡® }, children: [¡®Hello¡®] }, ??????????????????????{ tag: ¡®button¡®, attrs: null, children: [¡®Click¡®] }] }

ÎÒÒ²Ö»ÊÇÏëµ½Ò»¸ö±¿µÄ·½·¨Ë¼Â·£¬¼ÈÈ»Ï뽫һ¸öÀàËÆHTMLµÄ½á¹¹µÄJSXת»»³ÉÒ»¸öJavaScript¶ÔÏó£¬×ÔÈ»¶øÈ»ÐèÒªÒ»¸öÖмäÕߣ¬¶øÕâ¸öÖмäÕß¿ÉÒÔÊÇÒ»¸öº¯Êý£¬Í¨¹ý´«Èë²ÎÊý£¬È»ºó·µ»ØÒ»¸öJavaScript¶ÔÏó£¬Õâ¸ö²ÎÊý¿ÉÒÔͨ¹ý´«Í³µÄDOM²Ù×÷À´»ñÈ¡Õâ¸öJavaScript¶ÔÏóËùÐèÒªµÄtag£¬attrs£¬children¡£

Õë¶ÔµÚ¶þ¸öÎÊÌ⣬ÓÐÁ½¸öÔ­Òò£º
µÚÒ»¸ö£ºµ±ÎÒÃÇÄõ½Ò»¸ö±íʾUI½á¹¹ºÍÐÅÏ¢µÄ¶ÔÏóµÄʱºò£¬²»Ò»¶¨»á°ÑÔªËØäÖȾµ½ä¯ÀÀÆ÷µÄÆÕÍ¨Ò³ÃæÉÏ£¬Õâ¸öÊÇͨ¹ýreact-domʵÏֵģ¬Ò²ÓпÉÄܽ«ÕâÑùµÄ¶ÔÏóäÖȾµ½canvas£¬äÖȾ³ÉÒ»¸öAPP.
µÚ¶þ¸ö£ºµ±Êý¾ÝÒª±ä»¯µÄʱºò£¬ÐèÒª¸üÐÂ×é¼þµÄʱºò£¬¿ÉÒÔÓñȽϿìµÄËã·¨À´²Ù×÷JavaScript¶ÔÏ󣬶ø²»ÓÃÖ±½Ó²Ù×÷Ò³ÃæÉϵÄDOM£¬ÕâÑù¾Í¿ÉÒÔ¼õÉÙä¯ÀÀÆ÷ÖØÅÅ£¬¼«´óµÄÓÅ»¯ÐÔÄÜ¡£

×é¼þ

˵µ½×é¼þÎÊÌ⣬¾ÍÓм¸¸öСµãÐèÒªÌá³öÀ´

  • Ôõô»®·Ö×é¼þ
    -ÓÐ״̬×é¼þºÍÎÞ״̬×é¼þ
  • ×é¼þµÄ×éºÏºÍ¼Ì³Ð
    -×éºÏ×é¼þÏ൱ÓÚ¹¹½¨ÁËÒ»¸ö×é¼þÊ÷
  • ±àд×é¼þʱÐè×¢ÒâµÄ¹æ·¶
    1.×é¼þµÄ˽Óз½·¨¶¼ÊÇÒÔ_¿ªÍ·£¬ËùÓÐʼþ¼àÌýµÄ·½·¨¶¼ÓÃhandle¿ªÍ·£¬°Ñʼþ¼àÌý·½·¨´«¸ø×é¼þµÄʱºò£¬ÊôÐÔÃûÓÃon¿ªÍ·
    2.×é¼þÄÚÈݵıàд˳Ðò£º
    £¨1£©static¿ªÍ·µÄÀàÊôÐÔ£¬ÈçdefaultProps£¬propTypes
    £¨2£©¹¹Ô캯Êý£¬constructor
    £¨3£©getterºÍsetter
    £¨4£©×é¼þµÄÉúÃüÖÜÆÚ
    £¨5£©_¿ªÍ·µÄ˽Óз½·¨
    £¨6£©Ê¼þ¼àÌýµÄ·½·¨
    £¨7£©render¿ªÍ·µÄ·½·¨£¬ÓÐʱºòrender·½·¨ÀïÃæµÄÄÚÈÝ»á·Ö¿ªµ½²»Í¬º¯ÊýÀïÃæ½øÐУ¬ÕâЩº¯Êý¶¼ÒÔrender¿ªÍ·
    £¨8£©render·½·¨

Çø·ÖpropsºÍstate

ReactÔªËØ¿ÉÒÔÊÇDOM±êÇ©£¬Ò²¿ÉÒÔÊÇÓû§×Ô¶¨Òå×é¼þ£¬ÔÚÉæ¼°µ½×é¼þäÖȾµÄʱºò£¬¾ÍÐèÒªÓõ½×Ô¶¨Òå×é¼þ£¬µ±ReactÔªËØÓöµ½µÄÊÇÓû§×Ô¶¨Òå×é¼þ£¬Ëü»á½«JSXÊôÐÔµ±×÷µ¥¸öÊôÐÔ´«µÝ¸ø¸Ã×é¼þ£¬Õâ¸ö¶ÔÏó³ÆÖ®Îªprops¡£

¶ÔÓÚstate£¬ÒªÊµÊ±¸üÐÂUIÊÇͨ¹ýij¸ö×é¼þÄÚ²¿µÄ·½·¨£¬´Ó¶øÊµÏÖ·â×°µÄЧ¹û¡£×´Ì¬ºÍÊôÐÔÊ®·ÖÏàËÆ£¬µ«ÊÇ״̬ÊÇ˽Óеģ¬ÍêÈ«ÊÜ¿ØÓÚµ±Ç°×é¼þ£¬ÓÃES6µÄÀàµÄÓï·¨¶¨Òå×é¼þ£¬ÓÐÒ»Ð©ÌØÐÔ£¬¾Ö²¿×´Ì¬¾ÍÊÇÈç´Ë¡£

ʹÓÃÀàclass¶¨Òå×é¼þ£¬¾Í¿ÉÒÔʹÓÃÀàµÄÒ»Ð©ÌØÐÔ£º¾Ö²¿×´Ì¬ºÍÉúÃüÖÜÆÚ¹³×Ó¡£¶øÇÒ²»ÄÜÖ±½Ó¸üÐÂ״̬£¬¶øÊÇʹÓÃsetState()·½·¨£¬¶øÇÒ³õʼ»¯this.stateµÄ·½·¨Ö»ÄÜÊǹ¹Ô캯ÊýÀïÃæ¡£

×é¼þ¿ÉÒÔÑ¡Ôñ½«×´Ì¬×÷ΪÊôÐÔ´«µÝ¸øÆä×Ó×é¼þ£¬Õâ¸öͨ³£±»³ÆÎª×Ô¶¥ÏòÏ»òµ¥ÏòÊý¾ÝÁ÷¡£¿ÉÒÔÔÚÓÐ״̬µÄ×é¼þÖÐʹÓÃÎÞ״̬×é¼þ£¬Ò²¿ÉÒÔÔÚÎÞ״̬×é¼þÖÐʹÓÃÓÐ״̬×é¼þ¡£

¾¡Á¿ÉÙµÄʹÓÃstate£¬¾¡Á¿¶àµÄʹÓÃprops¡£

ÉúÃüÖÜÆÚº¯Êý

×é¼þµÄÉúÃüÖÜÆÚ¿ÉÒÔ·Ö³É3¸ö״̬£º
Mounting£ºÒѲåÈëÕæÊµDOM£¬
updating£ºÕýÔÚ±»ÖØÐÂäÖȾ£¬
Unmounting£ºÒÑÒÆ³öÕæÊµDOM.
ÉÏÃæµÄÈýÖÖ״̬ÓÖ´æÔÚÁ½ÖÖ£ºwillºÍdid£¬ËùÒÔ×ܹ²À´ËµÓÐ6ÖÖ·½·¨¡£


1.Mounting״̬Ïµķ½·¨µ÷ÓÃ˳Ðò£º

->getDefaultProps()£º¶ÔÓÚÿ¸ö×é¼þÀàÀ´½²£¬Õâ¸ö·½·¨Ö»»áµ÷ÓÃÒ»´Î£¬¸Ã×é¼þÀàµÄËùÓкóÐøÓ¦Óã¬getDefaultProps½«²»»áÔÙ±»µ÷Óã¬Æä·µ»ØµÄ¶ÔÏó¿ÉÒÔÓÃÓÚÉèÖÃĬÈϵÄpropsÖµ
->getInitialState():ÔÚ×é¼þʵÀý»¯Ö®Ç°±»µ÷ÓÃÒ»´Î£¬·µ»Ø³õʶµÄstateÖµ£¬ÓÐ״̬×é¼þÓ¦¸ÃʵÏִ˺¯Êý¡£¶ÔÓÚ×é¼þµÄÿ¸öʵÀýÀ´Ëµ£¬Õâ¸ö·½·¨µÄµ÷ÓÃÓÐÇÒÖ»ÓÐÒ»´Î£¬ÓÃÀ´³õʶ»°Ã¿¸öʵÀýµÄstate£¬ÔÚÕâ¸ö·½·¨ÀïÃæ¿ÉÒÔ·ÃÎÊ×é¼þµÄprops£¬Ã¿Ò»¸öReact×é¼þ¶¼ÓÐ×Ô¼ºµÄstate£¬ÓëpropsµÄÇø±ðÔÚÓÚstateֻλÓÚ×é¼þµÄÄÚ²¿£¬¶øpropsÔÚËùÓÐʵÀýÖй²Ïí¡£
->componentWillMount():ÔÚ×é¼þ¹ÒÔØÖ®Ç°µ÷ÓÃÒ»´Î
->render()
->componentDidMount()£ºÔÚ×é¼þ¹ÒÔØÖ®ºóµ÷ÓÃÒ»´Î

2.ÿ´ÎÐÞ¸Ästate£¬¶¼»áÖØÐÂäÖȾ×é¼þ£¬»áÒÀ´Îµ÷ÓÃÏÂÁз½·¨
shouldComponenrtUpdate()
componentWillUpdate()
render()
componentDidUpdate()


3.Updating״̬ϵÄ˳Ðò
¸¸×é¼þrender()
->componentWillReceiveProps:×é¼þµÄpropsÊôÐÔ¿ÉÒÔͨ¹ý¸¸×é¼þÀ´¸ü¸Ä£¬´ËʱÕâ¸ö·½·¨½«±»µ÷Ó᣿ÉÒÔÔÚÕâ¸ö·½·¨Àï¸üÐÂstate£¬ÒÔ´¥·¢renderÖØÐÂäÖȾ×é¼þ¡£
->shouldComponentUpdate()£º¿ÉÒÔ·µ»Øflase×èÖ¹×é¼þµÄÖØÐÂäÖȾ£¬´Ó¶øÌá¸ßÐÔÄÜ
->componentWillUpdate()
->render()
->componentDidUpdate()£º³ýÁËÊ×´ÎrenderÖ®ºóµ÷ÓÃcomponentDidMount£¬ÆäËûrender½áÊøÖ®ºó¶¼µ÷ÓÃÕâ¸ö·½·¨


4.Unmounting
ÿµ±ReactʹÓÃÍêÒ»¸ö×é¼þ£¬Õâ¸ö×é¼þ±ØÐë´ÓDOMÖÐÐ¶ÔØºó±»Ïú»Ù£¬´Ëʱ
componentWillUnmount»á±»Ö´ÐУ¬Íê³ÉËùÓеÄÇåÀíºÍÏú»Ù¹¤×÷¡£ÔÚcomponentDidMountÖÐÌí¼ÓµÄÈÎÎñ¶¼ÐèÒªÔڸ÷½·¨Öг·Ïú£¬Èç´´½¨µÄ¶¨Ê±Æ÷»òʱ¼ä¼àÌýÆ÷¡£

ʼþϵͳ

ÔÚReact.jsÖв»ÐèÒªÊÖ¶¯µ÷ÓÃä¯ÀÀÆ÷Ô­ÉúµÄaddEventListener½øÐÐʼþ¼àÌý£¬Ëü°ïÎÒÃÇ·â×°ºÃÁËһϵÁеÄonʼþ£¬¶øÇÒ²»ÐèÒª¿¼ÂDz»Í¬ä¯ÀÀÆ÷µÄ¼æÈÝÐÔ¡£ÕâЩʼþµÄÊôÐÔ¶¼ÒªÓÃÍÕ·åÃüÃû·¨¡£ÕâЩonʼþ¼àÌýÖ»ÄÜÓÃÔÚÆÕͨµÄHTML±êÇ©ÉÏ£¬¶ø²»ÄÜÓÃÔÚ×é¼þ±êÇ©ÉÏ¡£

ºÍÆÕͨä¯ÀÀÆ÷Ò»Ñù£¬Ê¼þ¼àÌýº¯Êý»á×Ô¶¯´«ÈëÒ»¸öevent¶ÔÏó£¬Õâ¸ö¶ÔÏóºÍÆÕͨµÄä¯ÀÀÆ÷event¶ÔÏóËù°üº¬µÄ·½·¨ºÍÊôÐÔ¶¼»ù±¾Ò»Ö£¬²»Í¬µÄÊÇReact.jsÕâ¸öevent¶ÔÏó²»ÊÇä¯ÀÀÆ÷ÌṩµÄ£¬¶øÊÇËü×Ô¼ºÄÚ²¿¹¹½¨µÄ¡£React.js½«ä¯ÀÀÆ÷Ô­ÉúµÄevent¶ÔÏó½øÐÐÁË·â×°£¬²»Óÿ¼ÂÇä¯ÀÀÆ÷¼æÈÝÎÊÌâ¡£

Function.prototype.bind,µ÷ÓÃf.bind(someObject)»á´´½¨Ò»¸öºÍfÓÐ×ÅÏàͬº¯ÊýÌåºÍ×÷ÓÃÓòµÄº¯Êý£¬µ«ÊÇÕâ¸öк¯ÊýÖУ¬this½«ÓÀÔ¶±»°ó¶¨ÔÚbindµÄµÚÒ»¸ö²ÎÊý£¬ÎÞÂÛÕâ¸öº¯ÊýÊÇÈçºÎ±»µ÷Óõġ£React.jsµÄʼþ¼àÌý·½·¨ÐèÒªÊÖ¶¯bindµ½µ±Ç°ÊµÀý£¬ÕâÖÖģʽÔÚReact.jsÖÐÊǷdz£³£ÓõÄ

ʼþ·Ö¸ö¼òµ¥µÄСÀࣺ

  • ¼ôÌù°åʼþ
  • ¼üÅÌʼþ
  • Êó±êʼþ
  • ´¥Ãþʼþ
  • ½¹µãʼþ
  • ±íµ¥Ê¼þ
  • UIʼþ

React.jsѧϰ֪ʶС½á£¨Ò»£©

Ô­ÎĵØÖ·£ºhttps://www.cnblogs.com/sminocence/p/8451277.html

ÖªÊ¶ÍÆ¼ö

Îҵıà³ÌÑ§Ï°Íø¡ª¡ª·ÖÏíwebǰ¶Ëºó¶Ë¿ª·¢¼¼Êõ֪ʶ¡£ À¬»øÐÅÏ¢´¦ÀíÓÊÏä tousu563@163.com ÍøÕ¾µØÍ¼
icp±¸°¸ºÅ ÃöICP±¸2023006418ºÅ-8 ²»Á¼ÐÅÏ¢¾Ù±¨Æ½Ì¨ »¥ÁªÍø°²È«¹ÜÀí±¸°¸ Copyright 2023 www.wodecom.cn All Rights Reserved