ÕâƪÎÄÕÂÀíÂÛµÄ֪ʶ±È½Ï¶àһЩ£¬¶¼ÊǸöÈ˹۵㣬ÃèÊöÓÐʧÍ×µ±µÄµØ·½Ï£Íû¶ÁÕßÖ¸³ö¡£
Õû¸ö΢ÐÅС³ÌÐò´Ó´ò¿ªµ½¹Ø±Õ£¬Õû¸ö¹ý³Ì¿ÉÒÔ·ÖΪºÜ¶à½×¶Î»òÕß˵״̬£¬ÕâÒ»Õû¶ÎµÄ¹ý³Ì£¬ÎÒÃdzÆ֮ΪС³ÌÐòµÄÉúÃüÖÜÆÚ¡£¶øÖÜÆÚÖеÄÿÖÖ²»Í¬µÄ״̬£¬µ½ÁíÒ»¸ö״̬µÄ¹ý¶ÈºÍת»¯£¬ÊÇÐèÒªÒ»¸ö´¥·¢»úÖƵģ¬ÕâÖÖ»úÖÆÎÒÃdzÆ֮Ϊ·ÓÉ¡£
Õû¸ö΢ÐÅС³ÌÐò´Ó´ò¿ªµ½¹Ø±Õ£¬Õû¸ö¹ý³Ì¿ÉÒÔ·ÖΪºÜ¶à½×¶Î»òÕß˵״̬£¬ÕâÒ»Õû¶ÎµÄ¹ý³Ì£¬ÎÒÃdzÆ֮ΪС³ÌÐòµÄÉúÃüÖÜÆÚ¡£¶øÖÜÆÚÖеÄÿÖÖ²»Í¬µÄ״̬£¬µ½ÁíÒ»¸ö״̬µÄ¹ý¶ÈºÍת»¯£¬ÊÇÐèÒªÒ»¸ö´¥·¢»úÖƵģ¬ÕâÖÖ»úÖÆÎÒÃdzÆ֮Ϊ·ÓÉ¡£
Ò»¡¢ÉúÃüÖÜÆÚ
ÏÈÀ´·ÖÎöÒ»ÏÂС³ÌÐò¹ÙÍø¸øµÄÕâÕÅͼ£¬ËüÖ¸µÄÊÇPageµÄÕû¸öÉúÃüÖÜÆÚ¡£ÒªÀí½âËü£¬ÎÒÃÇ»¹ÊÇÏȻعËÒ»ÏÂreact.jsµÄäÖȾ»úÖÆ¡£
reactÀïÃæÓÐÒ»¸övirtual DOMµÄ¸ÅÄËüʵ¼ÊÉÏÊǰѽçÃæÖеÄÿ¸öÔªËØ£¬ÓÃjsʵÏÖµÄÊ÷ÐÎÊý¾Ý½á¹¹¶ÔÓ¦ÆðÀ´£¬½á¹¹Àï¼Ç¼Á˽ڵãµÄËùÓÐÐÅÏ¢¡£ÎÒÃÇ¿ÉÒÔ°ÑÕâ¸övirtual DOM¿´³ÉÒ»¸ö¶ÀÁ¢µÄỊ̈߳¨jsÀïûÓÐÕæÕýµÄ¶àỊ̈߳©£¬ÎÒÃÇÔÝʱ³ÆËüΪviewỊ̈߳¬ËüµÄ¹¤×÷¾ÍÊǸºÔð½çÃæµÄäÖȾ¡£µ±virtual DOMÉϵÄÊý¾Ý·¢Éú±ä»¯µÄʱºò£¬½çÃæµÄÏàÓ¦µÄ²¿·Ö¾Í»á¸úןüУ¬¸üлúÖƱ»³ÆΪDOM diff£¬ÕâÀïÓÐƪÎÄÕÂÏêϸµØ·ÖÎöÁËÕâÖÖ¸üлúÖÆ£ºhttp://calendar.perfplanet.com/2013/diff/£¬²»¹ý¿ÉϧµÄÊÇËüÒª·Ç½²ÅÄÜ¿´£¬ºóÃæ·¢ÏÖsegmentfaultÉÏÓÐÈË°ÑËüת³ÉÖÐÎÄÃèÊöÁË£ºhttps://segmentfault.com/a/1190000000606216£¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔÔĶÁÒ»ÏÂÕâƪÎÄÕ¡£
ÕâÀï¼òµ¥µØ½éÉÜÏ£ºReact.createClass´´½¨µÄÀ඼ÓÐÒ»¸örender·½·¨£¬Ëü·µ»ØµÄ²»ÊÇÕæÕýµÄhtml´úÂ룬¶øÊÇÎÒÃÇÉÏÃæ½²µ½µÄvirtual DOM£¬Ã¿Ò»´ÎäÖȾ»áÖ±½Ó°´ÄÚ²¿×ª»»¹Øϵ»µ½½çÃæÉÏ£¬Õâ¸öÁ÷³Ì¸ú´«Í³µÄÍøÒ³äÖȾ²î²»¶à¡£µ«Êǵ±ÒªÐ޸ĽçÃæÉÏijЩԪËصÄʱºò£¬reactµÄÐÔÄܲŻáÕæÕýµÄÍ»ÏÔ³öÀ´£¬Ëü»áÈ¥µ÷ÓÃsetState·½·¨£¬ÕâʱÓÐÄÚÖõÄËã·¨»áÈ¥±È¶ÔÕâ´Î²Ù×÷ÒýÆðµÄ±ä»¯Ç°ºó£¬×îСµÄ²îÒìÊÇʲô£¬È»ºó°ÑÕâ¸ö×îСµÄ²îÒì¸üе½½çÃæÉÏ¡£DOM diffµÄÕâƪÎÄÕ½²µ½£¬´«Í³µÄÁ½¸öÊ÷ÐνṹҪ·ÖÎö³ö²îÒ죬¸´ÔÓ¶ÈÖÁÉÙÒªO(n^3)£¬µ«reactÇÉÃîµØ°ÑÕâ¸ö¸´ÔÓ¶È×öµ½Á˽ӽüO(n)£¬ÓÅ»¯Á˷dz£¶à£¬ÕâÒ²ÊÇËüµÄºËÐÄËã·¨¡£
ÕâÕû¸ö¶«¶«£¬¾ÍÊÇÎÒÃÇÉÏÃæ½²µ½µÄ¡°viewÏ̡߳±£¬Ëü¸ºÔðÄõ½Êý¾ÝºóÈ¥×ö½çÃæµÄ¸üУ¬²»¹ýÕâ¸ö¡°Ï̡߳±²»´¦ÀíÖ÷ÒµÎñÂß¼£¬Ö»¸ºÔðview²ã£¬ÓÃreactµÄʱºò£¬ËüµÄÄÚ²¿¿ò¼ÜÒѾ°ïÎÒÃÇ×öºÃÁË£¬ËùÒÔreact±»³ÆΪÊÇÒ»¸öview²ãµÄ¿ò¼Ü¡£
ÕâÕû¸ö¶«¶«£¬¾ÍÊÇÎÒÃÇÉÏÃæ½²µ½µÄ¡°viewÏ̡߳±£¬Ëü¸ºÔðÄõ½Êý¾ÝºóÈ¥×ö½çÃæµÄ¸üУ¬²»¹ýÕâ¸ö¡°Ï̡߳±²»´¦ÀíÖ÷ÒµÎñÂß¼£¬Ö»¸ºÔðview²ã£¬ÓÃreactµÄʱºò£¬ËüµÄÄÚ²¿¿ò¼ÜÒѾ°ïÎÒÃÇ×öºÃÁË£¬ËùÒÔreact±»³ÆΪÊÇÒ»¸öview²ãµÄ¿ò¼Ü¡£
ÄÇôÎÒÃÇ»¹ÐèÒªÒ»¸ö¡°Ï̡߳±À´´¦ÀíÖ÷Âß¼£¬ÕâЩ¾ÍÊÇÎÒÃÇ×Ô¼ºÒªÐ´µÄÖ÷ÒªµÄ´úÂ롣΢ÐÅС³ÌÐò¸úreactÒ»Ñù£¬Ò²°ïÎÒÃÇ×öºÃÁËÕâÖÖäÖȾµÄËã·¨¡£ÉÏͼÖУ¬×ó²àÂÌÉ«µÄ²¿·Ö£¬¿ÉÒÔÀí½âΪÉÏÎÄÖеġ°viewÏ̡߳±£¬Ó¦ÓÃÆô¶¯Ê±£¬Ëû»áÓÃPageÀïµÄdata³õʼֵȥInit³öÒ»¸ö³õʼµÄvirtual DOM£¬µ±setData±»µ÷ÓõÄʱºò£¬MINA¾Í»á´¥·¢ÎÒÃÇÉÏÃæÌÖÂÛµÄDOM diffµÄ¹ý³Ì£¬×Ô¶¯È¥¸üнçÃæ¡£ÕâÒ²ÊÇΪʲôÎÒÃÇÖ±½ÓÐÞ¸ÄdataÎÞЧµÄÔÒò£¬Ò»¶¨Òªµ÷ÓÃsetData½çÃæ²Å»áÓб仯¡£
ÉÏͼÓÒ²àµÄ¡°AppServiceÏ̡߳±£¬Æäʵ¾ÍÊÇÎÒÃÇ˵µÄÖ÷ÒµÎñÂß¼¡°Ï̡߳±£¬ÎÒÃǾÍÊǸúËü´ò½»µÀ¡£
ÉÏͼÓÒ²àµÄ¡°AppServiceÏ̡߳±£¬Æäʵ¾ÍÊÇÎÒÃÇ˵µÄÖ÷ÒµÎñÂß¼¡°Ï̡߳±£¬ÎÒÃǾÍÊǸúËü´ò½»µÀ¡£
ÏÂÃæ¼òÊöÒ»ÏÂÕû¸öÉúÃüÖÜÆڵĹý³Ì£º
¡°viewÏ̡߳±ºÍ¡°AppServiceÏ̡߳±ÔÚPage({¡ })±»Ö´ÐÐʱ²î²»¶àͬʱÆô¶¯£¨Êµ¼ÊÉÏ£¬¸öÈËÀí½â£¬ºóÕßÓ¦¸ÃÒªÏÈÒ»²½Æô¶¯£¬ÒòΪËüÒª½ÓÊÕnotify£¬´¿Êô²Â²â£©¡£Ç°Õßinit½áÊøʱ£¬·¢ËÍÒ»¸önotifyµ½ºóÕß¡£ºóÕßÔÚcreateÍê³Éºó£¬»áͬʱ´¥·¢OnloadºÍOnshow»Øµ÷£¨ÖÁÓÚΪʲôҪͬʱ´¥·¢Á½¸ö¿´ÆðÀ´²î²»¶àµÄ״̬£¬ÔÚÏ·½»á·ÖÎöµ½£©£¬ÔÚÕâÁ½¸öº¯ÊýÀïÃæ¶ÔpageµÄdata×öһЩÐ޸ģ¨setData£©£¬È»ºó¹ÒÆð½øÈëµÈ´ý״̬£¬µÈ¡°viewÏ̡߳±initÍ꣬²Å»á½øÐÐÏÂÃæµÄÁ÷³Ì£¬ÒòΪ¶ÔÓû§À´ËµÕâ¸öÓ¦ÓõÄÖ±½ÓʹÓ÷½Ê½¾ÍÊǽçÃ棬±³ºóÂß¼Óû§²»¹Ü£¬ËùÒÔÒ»¶¨ÒªµÈ¡°viewÏ̡߳±×¼±¸ºÃºó£¬ÔÙ×öÏÂÃæµÄÊÂÇé²ÅÓÐÒâÒå¡£
Èç¹ûOnloadºÍOnshowÓжÔdata×öÐ޸ģ¬ÊÕµ½notify֪ͨǰҲ²»»á×öʲô¶¯×÷£¬Ö±µ½ÊÕµ½Í¨Öª²Å»á°Ñ±ä»¯·¢Ë͸ø¡°viewÏ̡߳±£¬Ö®ºóµÄÁ÷³ÌÀsetData¾Í²»ÓõÈ֪ͨÁË£¬ÒòΪÕâ¸öֻ֪ͨÊÇΪÁËÈá°AppServiceÏ̡߳±ÖªµÀ¡°viewÏ̡߳±ÒѾ׼±¸ºÃÁË£¬½øÈë¿ÉÓÃ״̬ÁË£¬ºóÃæ¾Í¿ÉÒÔËæÒâsetDataÁË£¬¡°viewÏ̡߳±Ëæʱ¶¼»á×ö³öÏìÓ¦£¬Ò»·¢ÏÖÊý¾Ý±ä»¯¾Í»áÖØÐÂrenderÈ»ºó×öDOM diff²Ù×÷£¬È¥¸üнçÃæ¡£
¡°viewÏ̡߳±ºÍ¡°AppServiceÏ̡߳±ÔÚPage({¡ })±»Ö´ÐÐʱ²î²»¶àͬʱÆô¶¯£¨Êµ¼ÊÉÏ£¬¸öÈËÀí½â£¬ºóÕßÓ¦¸ÃÒªÏÈÒ»²½Æô¶¯£¬ÒòΪËüÒª½ÓÊÕnotify£¬´¿Êô²Â²â£©¡£Ç°Õßinit½áÊøʱ£¬·¢ËÍÒ»¸önotifyµ½ºóÕß¡£ºóÕßÔÚcreateÍê³Éºó£¬»áͬʱ´¥·¢OnloadºÍOnshow»Øµ÷£¨ÖÁÓÚΪʲôҪͬʱ´¥·¢Á½¸ö¿´ÆðÀ´²î²»¶àµÄ״̬£¬ÔÚÏ·½»á·ÖÎöµ½£©£¬ÔÚÕâÁ½¸öº¯ÊýÀïÃæ¶ÔpageµÄdata×öһЩÐ޸ģ¨setData£©£¬È»ºó¹ÒÆð½øÈëµÈ´ý״̬£¬µÈ¡°viewÏ̡߳±initÍ꣬²Å»á½øÐÐÏÂÃæµÄÁ÷³Ì£¬ÒòΪ¶ÔÓû§À´ËµÕâ¸öÓ¦ÓõÄÖ±½ÓʹÓ÷½Ê½¾ÍÊǽçÃ棬±³ºóÂß¼Óû§²»¹Ü£¬ËùÒÔÒ»¶¨ÒªµÈ¡°viewÏ̡߳±×¼±¸ºÃºó£¬ÔÙ×öÏÂÃæµÄÊÂÇé²ÅÓÐÒâÒå¡£
Èç¹ûOnloadºÍOnshowÓжÔdata×öÐ޸ģ¬ÊÕµ½notify֪ͨǰҲ²»»á×öʲô¶¯×÷£¬Ö±µ½ÊÕµ½Í¨Öª²Å»á°Ñ±ä»¯·¢Ë͸ø¡°viewÏ̡߳±£¬Ö®ºóµÄÁ÷³ÌÀsetData¾Í²»ÓõÈ֪ͨÁË£¬ÒòΪÕâ¸öֻ֪ͨÊÇΪÁËÈá°AppServiceÏ̡߳±ÖªµÀ¡°viewÏ̡߳±ÒѾ׼±¸ºÃÁË£¬½øÈë¿ÉÓÃ״̬ÁË£¬ºóÃæ¾Í¿ÉÒÔËæÒâsetDataÁË£¬¡°viewÏ̡߳±Ëæʱ¶¼»á×ö³öÏìÓ¦£¬Ò»·¢ÏÖÊý¾Ý±ä»¯¾Í»áÖØÐÂrenderÈ»ºó×öDOM diff²Ù×÷£¬È¥¸üнçÃæ¡£
¶øµ±Óû§½øÈëÁíÒ»¸öÒ³Ãæʱ£¨wx.nativateTo£©,onHideº¯Êý±»´¥·¢£¬Ò³Ãæ±»Çл»µ½ºǫ́£¬¿ÉÒÔ¿´³ÉÊǹÒÆð״̬£¬²»»áÓÐʲô¶¯×÷¡£¶øµ±Óû§Çл»»ØÀ´µÄʱºò£¨wx.navigateBack£©£¬onShow»á±»´¥·¢£¬µ«onLoad²»»á£¬onLoadÖ»»áÔÚpage³õʼ»¯Íê³Éʱ´¥·¢Ò»´Î£¬ºóÃæ²»»áÔÙ½øÈëÁË£¬ËùÒÔ¶ÔÓÚÖ»ÐèÒª×öÒ»´ÎµÄ²Ù×÷£¬Ç§Íò²»ÒªÐ´µ½onShowÀïÃ棬ÈçÇëÇóÒ³Ãæ³õʼÊý¾Ý£¬ÒªÐ´µ½onLoadÀï¡£ÉÏÃæ½²µ½¡°AppServiceÏ̡߳±³õʼ»¯µÄʱºòҪͬʱ´¥·¢onShowºÍonLoad£¬ËäÈ»×ÖÃæÉÏÀí½âÆðÀ´±È½ÏÏàËÆ£¬µ«ÆäʵÊDz»Ò»ÑùµÄ¹ý³Ì£¬´¥·¢Ìõ¼þÒ²ÊDz»Ò»ÑùµÄ¡£
¶þ¡¢Â·ÓÉ
·ÓɵĿØÖÆÂß¼Ö÷ÒªÔÚWAService.jsÀÕâ¸öÎļþ£¬µ±³ÌÐòÔÚÔËÐÐʱ£¬µ÷ÊÔ¹¤¾ßÀï¿ÉÒԲ鿴¡£¿ÉϧµÄÊÇ£¬Õâ¸öÎļþÊÇѹËõ¹ýµÄ£¬¸ñʽ»¯Ö®ºó£¬»¹ÊǺÜÄÑ¿´¶®Ö÷ÒªµÄÂß¼¡£²»¹ýÉϱí΢ÐŹٷ½¸øµÄÒ²±íÊöµÃ±È½ÏÃ÷ÏÔ¡£
´ó¸Å°´Õâ±í½éÉÜÏ·Óɵļ¸ÖÖÇé¿ö¡£
£¨1£©µ±³ÌÐò´ò¿ªµÄʱºò£¬µÚÒ»¸öÒ³Ãæ»á±»¼ÓÔØ£¨µÚÒ»¸öÒ³Ã棬ָÔÚapp.jsonÀïµÄpagesÅäÖõĵÚÒ»Ï£¬Ïȳõʼ»¯£¬ÕâʱÕâ¸öÒ³ÃæµÄonLoadºÍonShow»á±»µ÷Óá£
£¨2£©´ÓµÚÒ»¸öÒ³ÃæÌøµ½ÆäËüÒ³Ã棨navigateTo£©£¬ÕâʱµÚÒ»¸öÒ³ÃæµÄonHide»á±»µ÷Óã¬Ìø¹ýÈ¥µÄÆäËüÒ³ÃæonLoadºÍonShow»á±»µ÷Óá£
£¨3£©Èç¹ûÊÇredirectToÌøת£¬ÔòµÚÒ»¸öÒ³Ãæ±»´¥·¢µÄÊÇonUnload£¬ÆäËü¸ú£¨2£©Ò»Ñù
£¨4£©Ò³Ãæ·µ»Øʱ£¬Ç°Ò»¸öÒ³Ãæ±»onUnloadжµô£¬·µ»ØºóµÄÒ³ÃæonShow±»µ÷ÓᣴÓÕâ¿ÉÒÔ¿´³ö£¬·µ»Øʱ£¬Ç°Ò»¸öÒ³Ãæ±»Ïú»ÙÁË¡£
£¨5£©tabµÄÇл»£¬¾ÍÖ»ÓÐonShowºÍonHide£¬µ±È»µÚÒ»¸ö³öÏÖÒ³Ã滹ÓÐÒ»¸öonLoad¡£
Õ⼸¸öÇé¿öÒ²±È½ÏÖ±¹Û¡£
£¨1£©µ±³ÌÐò´ò¿ªµÄʱºò£¬µÚÒ»¸öÒ³Ãæ»á±»¼ÓÔØ£¨µÚÒ»¸öÒ³Ã棬ָÔÚapp.jsonÀïµÄpagesÅäÖõĵÚÒ»Ï£¬Ïȳõʼ»¯£¬ÕâʱÕâ¸öÒ³ÃæµÄonLoadºÍonShow»á±»µ÷Óá£
£¨2£©´ÓµÚÒ»¸öÒ³ÃæÌøµ½ÆäËüÒ³Ã棨navigateTo£©£¬ÕâʱµÚÒ»¸öÒ³ÃæµÄonHide»á±»µ÷Óã¬Ìø¹ýÈ¥µÄÆäËüÒ³ÃæonLoadºÍonShow»á±»µ÷Óá£
£¨3£©Èç¹ûÊÇredirectToÌøת£¬ÔòµÚÒ»¸öÒ³Ãæ±»´¥·¢µÄÊÇonUnload£¬ÆäËü¸ú£¨2£©Ò»Ñù
£¨4£©Ò³Ãæ·µ»Øʱ£¬Ç°Ò»¸öÒ³Ãæ±»onUnloadжµô£¬·µ»ØºóµÄÒ³ÃæonShow±»µ÷ÓᣴÓÕâ¿ÉÒÔ¿´³ö£¬·µ»Øʱ£¬Ç°Ò»¸öÒ³Ãæ±»Ïú»ÙÁË¡£
£¨5£©tabµÄÇл»£¬¾ÍÖ»ÓÐonShowºÍonHide£¬µ±È»µÚÒ»¸ö³öÏÖÒ³Ã滹ÓÐÒ»¸öonLoad¡£
Õ⼸¸öÇé¿öÒ²±È½ÏÖ±¹Û¡£
¡¡
1.±¾Õ¾×ñÑÐÐÒµ¹æ·¶£¬ÈκÎתÔصĸå¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ´´ÎÄÕ£¬ÇëתÔØʱÎñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄÜ»á¾ÎÒÃDZà¼Ð޸Ļò²¹³ä¡£
Ïà¹ØÎÄÕÂ
-
΢ÐÅС³ÌÐò ÂÖ²¥Í¼ swiperͼƬ×é¼þ
2016-11-23 09:49
-
΢ÐÅС³ÌÐò ¿ª·¢ ΢ÐÅ¿ª·¢Õß¹¤¾ß ¿ì½Ý¼ü
2016-11-23 09:49
-
΢ÐÅС³ÌÐò Ò³ÃæÌøת ´«µÝ²ÎÊý
2016-11-23 09:49
-
΢ÐÅС³ÌÐò ÈçºÎ»ñȡʱ¼ä
2016-11-23 09:49
ÍøÓѵãÆÀ
¾«²Êµ¼¶Á
ÈÈÃÅ×ÊѶ
¹Ø×¢ÎÒÃÇ
¹Øע΢ÐŹ«Öںţ¬Á˽â×îо«²ÊÄÚÈÝ