Абмен данымі паміж Redux прыкладаннем і серверам
Гэты раздзел будзе для прагных вучняў, якія не спыніліся на дасягнутым у Redux і вырашылі дайсці да канца гэтага дапаможніка. У наступных двух раздзелах мы закранем працу прыкладання Redux з асінхроннай логікай, звяжам наша прыкладанне з сервернай часткай і навучым яго абменьвацца з ёй данымі.
З папярэдніх раздзелаў мы ведаем, што ў аснове працы Redux прыкладання ляжыць сінхронны механізм. Асноўныя этапы працы заключаюцца ў адпраўцы экшэнаў пры ўзнікненні якой-небудзь падзеі ў прыкладанні, затым абнаўленні стэйту ў store функцыяй-рэдьюсарам, апавяшчэнні кампанентаў прыкладання аб змяненні стэйту і адпаведна адлюстраванні новага значэння стэйту ў кампанентах.
У рэальным жыцці часта бывае так, што прыкладанню
неабходная і асінхронная логіка, напрыклад пры
працы з HTTP API запытамі і атрыманнем даных
з якой-небудзь вонкавага сервера. Таму для таго,
каб наш 'сінхронны' Redux store мог працаваць
з такой асінхроннай логікай выкарыстоўваецца так
званае middlware - праграмнае забеспячэнне,
якое з'яўляецца пасрэднікам або сувязкай паміж
store нашага прыкладання і, напрыклад,
серверам, з якім мы пачнем працу ў гэтай
главе дапаможніка.
Для Redux створана мноства такіх middleware,
аднак найбольш шырока распаўсюджаным сярод
іх і афіцыйна рэкамендаваным пры працы Redux
прыкладанняў з асінхроннай логікай пакуль яшчэ застаецца
Redux Thunk.
Гэта ПА дапамагае нам выкарыстоўваць звычайныя
функцыі (або thunks), якія могуць утрымліваць
у сабе асінхронную логіку, такую як
setTimeout, Promises, async/await,
для ўзаемадзеяння з нашым store. Што тычыцца
самага тэрміна, thunk - гэта код, які
робіць якую-небудзь адкладзеную працу.
Цяпер, калі мы трохі пазнаёміліся з тым, як нам працаваць у Redux з ансінхроннай логікай, мы можам прыступіць да рэалізацыі гэтага этапа ў нашым прыкладанні. Нам трэба зрабіць так, каб наша прыкладанне магло ўзаемадзейнічаць з якім-небудзь вонкавым серверам, прымаючы ад яго і перадаючы яму даныя. Іншымі словамі, наперадзе нас чакае захапляльная і вельмі важная тэма. Пачнем.