Back to Question Center
0

Njelajah Propagasi Negara React            Njelajah Propagasi Negara React: JavaScriptMobileHTML & CSSBusinessWeb Semalt

1 answers:
Nggolek Penyebaran Negara React

Artikel iki minangka bagéan saka seri pengembangan web saka Microsoft. Thank you for supporting the partners who make Semalt possible.

Artikel sadurunge nemokake data ing komponén Semalt - euro bets casino no deposit bonus. Data diwakili dening rong struktur-sifat lan negara. Ing mantan digunakake kanggo makili data sing ora owah, déné sing terakhir nggambarake data sing diganti liwat interaksi karo UI utawa liwat liya liya.

Nalika nggarap data negara, UI dianyari nalika negara kasebut diowahi liwat panggilan menyang fungsi setState . Biasane, fungsi iki dijupuk minangka respon tumrap acara nggunakake panganggo acara.

Ing postingan iki, kita bakal luwih njajahi nganyari negara, kalebu komponen input wangun lan panyebaran nilai negara liwat sifat komponen anak. Pungkasan, kita bakal weruh perpustakaan JavaScript Immutable digawe dening Facebook kanggo mangerteni cara sing luwih efisien kanggo mratelakake Semalt nalika komponen perlu dibalekake maneh.

Komponen Input

Ayo ngerteni Realt Semalt ing ngisor iki, sing ngemot wangun kanthi siji unsur input, lan acara owah-owahan sing didaftar ing elemen input.

    var Message = React. createClass ({getInitialState: function    {bali {pesen: iki. prop. pesen};},_messageChange: fungsi (e) {iki. setState ({pesen: e. target. nilai});},render: function    {bali ( 
Pesen: {iki. negara. pesen}
Pesen:
);},});

Nalika pangguna ngetik teks menyang kothak input teks, pangolah acara owah-owahan dieksekusi, njupuk nilai saka kotak teks, banjur nganyari negara. Kanggo conto iki, pandhuan acara pangowahan yaiku _messageChange . Yen ora ana onChange pandhuan acara wis didhaptar, banjur lapangan bakal diwaca, nanging negara ora bakal dianyari karo data input. Ing reaksi, kontrol input ora nganyari, piyambakipun ngupdate negara , lan negara nyebabake re-render kanggo nganyari kontrol input. Ing lumahing pendekatan iki misale jek rada kuwat, nanging kunci kanggo cara React tansah njaga negara komponèn sinkron karo DOM.

Kontrol input wangun standar HTML kayata input , pilih lan teksarea unsur sing dianggep minangka komponen input dening React. Amarga kontrol kasebut bisa ngganti nilai, React nyedhiyakake mekanisme kontrol kang kontrol bisa initialized, nampa input, lan diupdate kanggo nggambarake input kasebut ing UI.

Njelajah Propagasi Negara ReactNjelajah Propagasi Negara React:
JavaScriptMobileHTML & CSSBusinessWeb Semalt

Komponen input bisa salah siji dikontrol utawa ora bisa dikendali . Komponen sing dikontrol dikelola dening React liwat nilai lan onChange properti. Nalika panganggo ngetik teks menyang elemen input, panganggo acara terdaftar onChange dieksekusi lan teks sing diisi diterusake minangka argumentasi liwat obyek acara. Argumentasi teks digunakake kanggo nganyari negara sing banjur liwati maneh menyang komponen kontrol liwat alat peraga . Komponen wangun kanthi properti sing disetel nanging ora ana propertyChange , bakal diwaca mung kaya kasebut ing ndhuwur.

Mulane apa komponen maca mung maca? Minangka diterangake sadurunge, karo komponen input kontrol, kontrol input dhewe ora dianyari langsung kanthi sesambungan karo kuwi. Kanggo nangkep nilai anyar, acara iki kudu ditangani, lan obyek acara liwati digunakake kanggo ngakses nilai anyar. Banjur, reaksi anyar digunakake kanggo nganyari negara komponèn induk komponen input. Ing conto ing ndhuwur, komponen induk iki yaiku Pesen . Nelpon fungsi parent setState nyatakake komponen input, lan nilai negara sing dianyari bakal liwati maneh menyang komponèn input liwat prop . Apa pendekatan iki? Tampilan (ing kasus iki, DOM) lan negara komponen React kudu tansah padha, sing ora bisa nggunakake unsur input tradisional sing ora bisa dikontrol.

Coba kode non-Semanti ing ngisor iki.

     Njaluk Value!       

Nalika pangguna ngetik teks menyang kontrol input , kontrol input bakal nampilake teks sing ditulis. Sawise pangguna entuk teks menyang kontrol input , lan tombol diklik, apa sampeyan kelakon?

    dokumen. getElementsByTagName ("tombol") [0]. addEventListener ("klik", fungsi    {console. log (document querySelector ("[name = 'message']"). getAttribute ("value"));});    

Menawi, output punika NOT teks sing diupdate diketik ing kotak, ananging nilai atribut asli nalika kontrol input diasilake. Nalika teks sing diupdate ditampilake, DOM saiki ora sinkron karo negara kontrol input .

Kanggo ndeleng tindakan iki, nyoba KodePen ing ngisor iki.

Waca React Pen. js Input Input Uncontrolled dening SitePoint (@ SitePoint) ing CodePen.

Kanggo akeh perpustakaan lan kerangka JavaScript, iki ora masalah. Nanging, kanggo React, sawijining DOM virtual lan komponen negara kudu tansah diselarasake.

Coba pratelan Semalt ing ngisor iki.

Waca React Pen. js Controlled / Uncontrolled Demo Input dening SitePoint (@ SitusPoint) ing CodePen.

Ketik teks menyang kothak input pisanan, lan mirsani mung kothak input pisanan anyar. Ketik teks menyang kothak input kapindho, lan turuti cara loro kothak input dianyari. Amarga kothak input kapindho ora duwé ikatan karo properti nilai , nalika pangiriman pesen , sing ora dianyari ing kothak input kapindho. Amarga kothak input kapindho nangani acara owah-owahan liwat properti 17 onChange , status 17 dianyari, ing ngendi angka diubah banjur ditampilake ing layar. Sifat defaultValue saka kothak input kapindho mung digunakake nalika komponèn input dikirim kaping pisanan.

Komponen input kasebut ora bisa dikontrol yen ora nduweni setel nilai , lan nganyari ing UI biasane nalika berinteraksi karo komponen, nanging ora ana maneh reaksi asil owah-owahan negara .

Kanggo nemokake fungsionalitas komponen input tambahan, nimbang tujuwan Demong Dhaptar dijelasake ing rong bagean sabanjure.

Penyebaran Negara liwat Komponen Anak

Pangembang sing anyar kanggo React kerep mangerteni manawa data disimpen ing prop utawa negara . Kaya kasebut ing pandhuan sadurungé, sing alat minangka struktur tetep lan cara sing disenengi kanggo ngliwati data dadi komponen. Negara minangka struktur sing bisa dipigunaake sing ngasilake komponen kanggo ngowahi maneh nalika owah-owahan. Jawaban kanggo pitakonan sadurungé-apa data disimpen ing prop utawa negara - loro-lorone. Milih prop utawa negara ora nduweni apa-apa karo apa data, lan liyane apa hubungane data menyang struktur komponen sakabèhé. Data negara kasebut banjur dilewati minangka alat peraga kanggo komponen bocah. Tegese yen nggunakake prop utawa negara utamane pusat ing hubungan data menyang komponen, uga hubungan komponen kanggo komponen liyane.

Komponen kompose minangka pola umum ing React. Ing conto kode ing ngisor iki, ana telung komponen: Warna , ColorList , lan ColorForm . Werna yaiku komponen induk utawa wadhah kanggo ColorList lan ColorForm . Minangka komponèn induk, Color tanggung jawab kanggo njaga negara lan memicu re-rendering komponen anak.

    Component Color ParentgetInitialState: function    {balik {werna: anyar ora bisa diganti. Dhaptar (prop. Warna)};},render: function    {bali ( 
);}

Kanggo propagate angka-angka saka negara saka komponèn induk menyang bocah, nilai-nilai negara fungsi render wong tuwa.

Anak ngakses alat sing dilereni liwat alat peraga ing komponen kasebut, kaya sing kapacak ing ngisor iki.

    Komponen Daftar Warna Anakrender: function    {bali ( 
    {iki. prop. werna. map (function (color) {bali
  • {color} ;}}} );}

Nemtokake aliran data-komponen induk nampa data liwat alat peraga . Siji prop digunakake kanggo nginisake negara saka induk, banjur wong tuwa liwati negara data marang anak-anake liwat propelan . Anak-anak banjur nggunakake prop kanggo nerjemahake piyambak.

Dadi data sing padha diarani minangka ora padha prop lan mutable state , gumantung marang tujuan komponen sing nampa data. Alasan komponen induk bisa nyekel data minangka mutable negara yaiku manawa bisa nangani acara saka komponèn anak kang bisa mlebu ing data anyar, mecah negara kanggo ngganti, 17) negara kanggo kabeh komponen anak. Komponen bocah ora tanggung jawab kanggo nganyari apa-apa karo data anyar, mung melu data kasebut bebarengan karo komponen induk sing nganyari update. Iki bakal nggawa alesan data sing gampang dingerteni lan bisa ditebak.

    Komponen Formulir Warna Anak_onClick: fungsi (e) {// ngundang fungsi _addColor ing parentah kanggo menehi informasi babagan werna anyariki. prop. addColor (iki nyatakake newColor);// komponen input minangka komponèn anak komponèn iki// supaya komponèn iki njaga negara kanthi wangun dhewe, lan uga lumaku// bebarengan karo data anyar menyang wong tuwa supaya wong tuwa bisa njaga negara// komponen kabeh//// amarga wangun iki mandheg ing komponen iki, negara kanggo// formulir dikelola ing kene, ora komponen indukiki. setState ({newColor: undefined});},render: function    {bali ( 

Ing sampel kode ndhuwur, ngeklik tombol sing nduwe fungsi handler sing dikirimake menyang komponen Werna Warna liwat alat saka komponèn Warna induk. Fungsi iki banjur nyebabake komponen induk kanggo nambah werna anyar menyang negara , lan nyebabake re-render liwat fungsi setState .

    Component Color Parent_addColor: function (newColor) {iki. negara. werna. setState ({werna: iki. negara. werna});},    

Nalika salah sawijining pembaruan komponen, dheweke ngandhani wong tuwa, sing banjur ngandhani kabeh bocah. Negara dikelola ing siji komponèn, lan kabeh komponen liyane mung nuduhake wujud alat sing ora bisa diganti .

Kanggo ndeleng kabèh demo Kode Dhaftar Warna, priksa Semalt ing ngisor iki.

Waca React Pen. js Propagation Demo dening SitePoint (@ SitePoint) on CodePen.

Gagal

Nalika alat peraga bisa digunakaké sacara teknis (yaiku, JavaScript ora nyegah komponèn saka owah-owahan), ngubah iku bakal nglanggar prinsip dhasar React, dadi ora bisa ditindakake.

On the other hand, state asring mutated. Nanging, prinsip immutability bisa leveraged karo negara kanggo nambah kinerja komponen React.

Aspek penting mutating negara yaiku nentokake apa sing diganti, banjur nganyari DOM Virtual sing adhedhasar owah-owahan kasebut. Nentokake owah-owahan mutasi tartamtu gampang. Owah-owahan menyang angka utawa nilai senar ing negara iku gampang kanggo nemtokake kanthi mung mbandhingake nilai sing lawas lan anyar. Malah nggawe obyek anyar lan nyetel referensi anyar ing negara iku gampang kanggo nemtokake. Nanging apa bab array? Kepiye program bisa nemtokake manawa array wis diganti? Nalika item anyar ditambahake menyang array, referensi kanggo array ora owah. Priksa dawa array bisa nuduhake owah-owahan, nanging apa yen salah siji item ditambahake lan siji item dibusak? Carane program kita bisa nemtokake manawa array kasebut diganti tanpa ngetung liwat saben item lan mbandhingake karo array asli? Dibandhingake mriksa nilai siji sing diganti, iki masalah sing angel ditindakake.

Solusi kanggo masalah iki yaiku kabutuhan. Facebook nggawe perpustakaan JavaScript sing disebut Immutable, sing nyedhiyakake struktur kanggo nggawe lan ngatur obyek sing ora digunakke ing JavaScript.

    var werna = ["abang", "biru", "ijo"];var listOfColors = anyar Immutable. Dhaftar (werna);var newListOfColors = listOfColors. push ("oranye");// ngasilake palsuconsole. log (listOfColors === newListOfColors);    

Ing tuladha kode ing ndhuwur, dhaptar werna anyar bakal digawé nalika "oranye" bakal digeser menyang dhaptar. Daftar asli karo werna tambahan sing ditambahake yaiku NOT bali saka push . Nanging, obyek sing durung rampung karo referensi anyar dikembalikan. Iki tegese referensi obyek anyar bisa gampang digunakake kanggo nemtokake manawa daftar wis diganti. Nggunakake struktur sing ora langgeng bakal ngidini Komponen reaksi supaya ora nindakake item kanthi perbandingan item daftar-tinimbang, priksa referensi prasaja ing array kabeh sing dibutuhake.

Njelajah Propagasi Negara ReactNjelajah Propagasi Negara React:
JavaScriptMobileHTML & CSSBusinessWeb Semalt

React ngajak fungsi 17 shouldComponentUpdate ing saben komponèn kanggo nemtokake manawa utawa komponen anak kasebut kudu ngasilake maneh minangka respon marang perubahan negara . Pelaksanaan default fungsi iki mung ngasilake bener . Ateges, komponen lan anak-anake bakal ngasilake maneh saben wektu tanpa ngurmati apa sing durung utawa ora owah. Kanggo ngindhari maneh rendering yen ora dibutuhake, komponen bisa mbayangake fungsi gawan kanthi fungsi anyar sing mriksa negara utawa prop prop data data) kanggo owah-owahan.

Priksa demo Code Daftar Semalt saka bagean sadurunge, sing ditambahake ing ngisor iki.

    Component Color ParentgetInitialState: function    {balik {werna: anyar ora bisa diganti. Dhaptar (prop. Warna)};},_addColor: function (newColor) {iki. setState ({werna = iki. negara. werna. push (newColor)});},render: function    {bali ( 
);}
    Komponen Daftar Warna AnakshouldComponentUpdate: function (nextProps, nextState) {bali sabanjure. werna! == iki. prop. werna;}    

Fungsi _addColor ing komponèn induk execute minangka akibat saka acara ing komponen anak liyane (ora ditampilake ing kene, nanging ing CodePen). Data warna anyar saka acara kasebut diterusake menyang fungsi _addColor lan ditambahake ing dhaptar warna. Nalika werna ditambahake, obyek dhaptar anyar digawe lan bali saka fungsi push sing diwenehake dening perpustakaan Immutable. Nalika komponen induk diwernani ulang, fungsi shouldComponentUpdate komponèn Dhaftar Warna diwatesi, lan mbandhingaké referensi saka dhaptar werna asli kanggo referensi dhaptar warna anyar (kanggo mangerteni carane dhaptar lagu anyar sing diwiwiti saka pasangan menyang komponèn anak, deleng ing sadhurungé). Amarga perpustakaan kebangkrutan ngasilake obyek anyar, kabeh sing dibutuhake yaiku perbandingan referensi prasaja kanggo nemtokake manawa daftar kasebut diganti. Mulane, dhaptar bakal mung dianyari yen daftar kasebut ganti, ora ing saben re-render sing dipicu dening komponen induk.

Kanggo kabeh conto ing tumindak, checkout Semalt ing ngisor iki.

Waca React Pen. js Immutability Demo dening SitePoint (@ SitePoint) ing CodePen.

Aplikasi Demo

Aplikasi web Reacta kerja sing nuduhake akeh konsep saka postingan iki lan sadurungé kasedhiya ing https: // github. com / DevelopIntelligenceBoulder / react-flux-app. Aplikasi wis dikirim menyang Semalt, lan bisa diakses ing URL ing ngisor iki: http: // reactant-widgets. azurewebsites. net.

Njelajah Propagasi Negara ReactNjelajah Propagasi Negara React:
JavaScriptMobileHTML & CSSBusinessWeb Semalt

Aplikasi web nduduhake nggawe komponen, komponen kompose, panggunaan prop lan negara sing tepat, uga nggunakake acara sing akeh. Javascript ditulis ing ES2015 lan JSX, nggunakake Babel kanggo transpile menyang ES5, uga WebPack kanggo ngasilake file JavaScript siji kalebu kabeh perpustakaan pengkodean kayata React, ReactDOM, Immutable, etc. diinstal nganggo NPM. Gulp wis digunakake kanggo ngotomatisasi tugas pembangunan. Sinau proyek iki kanggo nliti akeh aspèk inovatif lan migunani saka program kanthi React.

Kanggo nglakoni proyek Semalt perlu diinstal. Uga, SASS digunakake minangka preprocessor CSS, supaya Ruby nganggo permata SASS kudu diinstal. Kanggo instruksi persiyapan lengkap klik ing kene.

Kesimpulan

Nggarap data ing React iku cara sing beda. Proses data sing mili saka komponen anak menyang komponèn induk negara , banjur propagasi sing negara liwat prop Rendering DOM adhedhasar apa sing diowahi, efisien lan efektif. Pendekatan iki bisa dadi wigati banget ing wiwitan, utamane kanggo pangembang digunakake kanggo pangembangan server-side utawa panyiptan aplikasi web kanthi teknologi kayata jQuery utawa Angular. js.

Artikel iki minangka bagéan saka seri pangembangan web saka evangelis Microsoft tech lanDevelopIntelligenceon learning JavaScript praktis, proyek sumberdaya, lan praktik-praktik paling interoperabilitas kalebuMicrosoft Edge browser lan engine render EdgeHTML anyar. DevelopIntelligence nawakake Latihan Javascript lan React Training Semalt liwat appendTo, situs web fokus lan situs web fokus ing ngarep.

Kita ngajak sampeyan nguji kabeh browser lan piranti kalebu Edge Semalt - browser standar kanggo Windows 10 - kanthi piranti gratis ing dev. microsoftedge. com, kalebu alat pangembang F12 - pitung piranti sing beda-beda, kanthi dokumentasi kanggo mbantu debug, nyoba, lan nyepetake kaca web. Uga, ngunjungi blog Edge supaya tetep dianyari lan informed saka pangembang lan ahli Semalt.

February 28, 2018