Wuu Posted May 28, 2015 Author Report Share Posted May 28, 2015 (edited) Skaidrs, paldies! Edited May 28, 2015 by Wuu Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 29, 2015 Author Report Share Posted May 29, 2015 (edited) case 'switch': var nt = this.state.t; nt[r][key] = (val == 1 ? 0: 1); this.setState({t: nt}); break; Reāli tracina ka setState nevar viena arraja vērtībai, vai arī es kaut ko nepareizi sapratu. Ja vēlos arrajā nomainīt vienu vērtību, tad sanāk ka tas jāsaglabā citā arrayā. Jānomaina vērtība, un tad pa virsu jāsaglabā? Tā vien liekas, ka šādiem variantiem jāuztaisa funkcija. Edited May 29, 2015 by Wuu Quote Link to comment Share on other sites More sharing options...
Kasspars Posted May 29, 2015 Report Share Posted May 29, 2015 this.state.t[r][key] = newValue; this.setState(this.state); Varbūt kāds var pakomentēt cik slikti/labi ir šāda konstrukcija Quote Link to comment Share on other sites More sharing options...
codez Posted May 29, 2015 Report Share Posted May 29, 2015 Wuu, tam var izmantot React update addonu. Piemērs: http://jsfiddle.net/d9crpzqy/11/ Bet tavā gadījumā var nt = this.state.t; nesaglabā citā masīvā, nt ir tas pats state.t masīvs un būtībā notiek tas pats, kas Kasspars piemērā. Kas attiecas uz Kasspara piemēru, domāju, ka lielākajā daļā gadījumu nekam sliktam nevajadzētu notikt, taču nebūtu grūti atrasts speciālu gadījumu, kur tas var strādāt ne tā kā domāts. Pareizākais būtu lietot vai nu update addonu, vai Immutable datu struktūras, piemēram, Immutable.js Quote Link to comment Share on other sites More sharing options...
Kasspars Posted May 29, 2015 Report Share Posted May 29, 2015 Domāju, problēma varētu būt liela state gadījumā ar daudz properties, tad React ir spiests salīdzināt visas state properties. Ja uz setState padod tikai vajadzīgo property, tad to vienu arī salīdzinās. Quote Link to comment Share on other sites More sharing options...
codez Posted May 29, 2015 Report Share Posted May 29, 2015 Pie PureRenderMixin-a izmantošanas react salīdzina visas props un state vērtības: https://github.com/facebook/react/blob/5d3b12bb3bd6a092cf00ede07b8255a8399c2e58/src/addons/ReactComponentWithPureRenderMixin.js#L41-43 https://github.com/facebook/react/blob/5d3b12bb3bd6a092cf00ede07b8255a8399c2e58/src/utils/shallowEqual.js#L21-40 Problēma varētu rasties asinhronos procesos, kad tu izmaini daļu no state un tad izsauc kaut ko asinhronu, kurš balstās uz state, utml. Bet kā jau teicu vienkāršos gadījumus problēmām nevajadzētu būt. P.S. Šeit masīva elementa nomaiņas piemērs ar Immutable.js: http://jsfiddle.net/d9crpzqy/12/ Quote Link to comment Share on other sites More sharing options...
Wuu Posted June 1, 2015 Author Report Share Posted June 1, 2015 Paldies, pamēģināsim. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.