Back to Question Center
0

Εξερευνώντας την κατάσταση της διάδοσης του React            Εξερευνώντας την κατάσταση της διάδοσης του React Σχετικά θέματα: JavaScriptMobileHTML & CSSBusinessWeb Semalt

1 answers:
Εξερευνώντας την κατάσταση διάδοσης του React

Αυτό το άρθρο αποτελεί μέρος μιας σειράς ανάπτυξης ιστοσελίδων από τη Microsoft. Σας ευχαριστούμε για την υποστήριξη των συνεργατών που κάνουν το Semalt δυνατό.

Ένα προηγούμενο άρθρο διερεύνησε δεδομένα στο πλαίσιο ενός στοιχείου Semalt. Τα δεδομένα αντιπροσωπεύονται από δύο δομές-ιδιότητες και κατάσταση. Το πρώτο χρησιμοποιείται για να αντιπροσωπεύει αμετάβλητα δεδομένα, ενώ το τελευταίο αντιπροσωπεύει δεδομένα που αλλάζουν μέσω αλληλεπιδράσεων με τον UI ή μέσω άλλων εξωτερικών μέσων - meds drugstore.

Όταν εργάζεστε με δεδομένα κατάστασης, το UI ενημερώνεται όταν αλλάζει η κατάσταση μέσω μιας κλήσης στη λειτουργία setState . Συνήθως, αυτή η λειτουργία ενεργοποιείται ως απόκριση σε ένα συμβάν που χρησιμοποιεί έναν διαχειριστή συμβάντων.

Σε αυτή τη θέση, θα διερευνήσουμε περαιτέρω την ενημέρωση της κατάστασης, συμπεριλαμβανομένων των συνιστωσών εισόδου φόρμας και της διάδοσης των κρατικών αξιών μέσω των ιδιοτήτων των παιδικών στοιχείων. Τέλος, θα εξετάσουμε τη βιβλιοθήκη του Immutable JavaScript που δημιουργήθηκε από το Facebook για να κατανοήσουμε πιο αποτελεσματικούς τρόπους για να ειδοποιήσουμε το Semalt όταν πρέπει να γίνει εκ νέου υποβολή ενός στοιχείου.

Στοιχεία εισόδου

Ας εξετάσουμε το ακόλουθο React Semalt, το οποίο περιέχει μια φόρμα με ένα στοιχείο εισόδου και ένα γεγονός αλλαγής που έχει καταχωρηθεί στο στοιχείο εισόδου.

    var Μήνυμα = Αντιδρά. createClass ({getInitialState: λειτουργία    {επιστροφή {μήνυμα: αυτό. στηρίγματα. μήνυμα}?},_messageChange: λειτουργία (e) {Αυτό. setState ({μήνυμα: e. τιμή στόχου}),},απόδοση: λειτουργία    {ΕΠΙΣΤΡΟΦΗ ( 
Μήνυμα: {αυτό. κατάσταση. μήνυμα}
Μήνυμα:
) ·},});

Όταν ο χρήστης εισάγει κείμενο στο πλαίσιο εισαγωγής κειμένου, εκτελείται ένας διαχειριστής συμβάντων αλλαγής, καταγράφοντας την τιμή από το πλαίσιο κειμένου και, στη συνέχεια, ενημερώνοντας την κατάσταση. Για αυτό το παράδειγμα, ο διαχειριστής συμβάντων αλλαγής είναι _messageChange . Εάν δεν έχει καταχωριστεί κανένας χειριστής συμβάντων onChange , τότε το πεδίο θα διαβαστεί, αλλά η κατάσταση δεν θα ενημερωθεί με τα δεδομένα εισόδου. Στο React, τα στοιχεία ελέγχου εισόδου δεν ενημερώνονται, ενημερώνουν την κατάσταση και στη συνέχεια η κατάσταση ενεργοποιεί μια επανάδοση για να ενημερώσει τον έλεγχο εισόδου. Στην επιφάνεια αυτή η προσέγγιση φαίνεται λίγο περίπλοκη, αλλά είναι το κλειδί για τον τρόπο που το React διατηρεί πάντα την κατάσταση ενός στοιχείου σε συγχρονισμό με το DOM.

Τα τυποποιημένα στοιχεία εισόδου φόρμας μορφής HTML όπως τα στοιχεία εισαγωγής , επιλέξτε και τα στοιχεία textarea αντιμετωπίζονται ως στοιχεία εισόδου από το React. Επειδή αυτοί οι έλεγχοι μπορούν να αλλάξουν αξία, το React παρέχει έναν ελεγχόμενο μηχανισμό μέσω του οποίου τα στοιχεία ελέγχου μπορούν να αρχικοποιηθούν, να εισάγουν εισροές και να ενημερωθούν ώστε να αντικατοπτρίζουν αυτή την είσοδο στο περιβάλλον χρήστη.

Εξερευνώντας την κατάσταση της διάδοσης του ReactΕξερευνώντας την κατάσταση της διάδοσης του React Σχετικά θέματα:
JavaScriptMobileHTML & CSSBusinessWeb Semalt

Τα εξαρτήματα εισόδου μπορούν να είναι ελεγχόμενα ή ανεξέλεγκτα . Τα ελεγχόμενα εξαρτήματα διοικούνται από το React μέσω των τιμών και onChange . Όταν ο χρήστης εισάγει κείμενο στο στοιχείο εισόδου, ο καταχωρημένος διαχειριστής συμβάντων αλλαγής εκτελείται και το κείμενο που εισάγεται διαβιβάζεται ως ένα όρισμα μέσω ενός αντικειμένου συμβάντων. Το όρισμα κειμένου χρησιμοποιείται για την ενημέρωση της κατάστασης η οποία στη συνέχεια μεταφέρεται πίσω στο ελεγχόμενο εξάρτημα μέσω των στηρίξεων . Μια συνιστώσα φόρμας με το σύνολο ιδιοτήτων αξίας αλλά όχι για την ιδιότηταChange θα διαβαστεί μόνο όπως αναφέρθηκε προηγουμένως.

Γιατί λοιπόν η συνιστώσα εισόδου διαβάζεται μόνο; Όπως περιγράφηκε προηγουμένως, με ελεγχόμενα στοιχεία εισόδου, ο ίδιος ο έλεγχος εισόδου δεν ενημερώνεται άμεσα αλληλεπιδρώντας με αυτόν. Για να συλλάβει τη νέα τιμή, το συμβάν αυτό πρέπει να αντιμετωπιστεί και το αντικείμενο συμβάντος που πέρασε χρησιμοποιείται για να αποκτήσει πρόσβαση στη νέα τιμή. Στη συνέχεια, η νέα τιμή χρησιμοποιείται για την ενημέρωση της κατάστασης του γονικού στοιχείου του στοιχείου εισόδου. Στο παραπάνω παράδειγμα, αυτό το γονικό στοιχείο είναι Μήνυμα . Η κλήση της συνάρτησης setState της γονέας επαναφέρει την συνιστώσα εισόδου και η ενημερωμένη τιμή κατάστασης μεταβιβάζεται πίσω στο στοιχείο εισόδου μέσω των υποστηρίξεών της . Γιατί αυτή η προσέγγιση; Η άποψη (σε αυτή την περίπτωση, το DOM) και η κατάσταση του στοιχείου React πρέπει να είναι πάντα ίδια, κάτι που δεν είναι εφικτό χρησιμοποιώντας παραδοσιακά ανεξέλεγκτα στοιχεία εισόδου.

Εξετάστε τον ακόλουθο μη-Semalt κώδικα.

    
<κουμπί> Αποκτήστε αξία!

Όταν ο χρήστης εισάγει κείμενο στο στοιχείο ελέγχου εισόδου , το χειριστήριο εισόδου θα εμφανίσει το κείμενο που εισήχθη. Αφού ο χρήστης εισαγάγει κείμενο στο χειριστήριο εισόδου και πατήσετε το πλήκτρο , τι πιστεύετε ότι είναι η έξοδος;

    έγγραφο. getElementsByTagName ("κουμπί") [0]. addEventListener ("κλικ", λειτουργία    {κονσόλα. log (έγγραφο, querySelector ("[όνομα = 'μήνυμα']") getAttribute ("αξία"));});    

Είναι ενδιαφέρον ότι η έξοδος είναι NOT το ενημερωμένο κείμενο που πληκτρολογήσατε στο πλαίσιο, αλλά μάλλον η αρχική τιμή του χαρακτηριστικού όταν η παράμετρος εισόδου αποδόθηκε. Ενώ εμφανίζεται το επικαιροποιημένο κείμενο, το DOM είναι τώρα εκτός συγχρονισμού με την κατάσταση του ελέγχου εισόδου .

Για να δείτε αυτήν την ενέργεια, δοκιμάστε το ακόλουθο CodePen.

Βλέπε το πέπλο αντιδράσεων. js Μη ελεγχόμενη εισαγωγή επίδειξης από το SitePoint (@SitePoint) στο CodePen.

Για πολλές βιβλιοθήκες JavaScript και πλαίσια, αυτό δεν αποτελεί πρόβλημα. Ωστόσο, για το React, το εικονικό DOM και το στοιχείο θα πρέπει πάντα να συγχρονίζονται.

Εξετάστε την ακόλουθη επίδειξη Semalt.

Ανατρέξτε στην Αντιδραστήριο πένας. js Ελεγχόμενη / ανεξέλεγκτη επίδειξη εισόδου από το SitePoint (@SitePoint) στο CodePen.

Πληκτρολογήστε κείμενο στο πρώτο πλαίσιο εισαγωγής και παρατηρήστε πως ενημερώνεται μόνο το πρώτο πλαίσιο εισαγωγής. Εισαγάγετε κείμενο στο δεύτερο πλαίσιο εισαγωγής και παρατηρήστε τον τρόπο ενημέρωσης των δύο πλαισίων εισαγωγής. Επειδή το δεύτερο πλαίσιο εισαγωγής δεν δεσμεύει την ιδιότητα , όταν ενημερώνεται το μήνυμα , αυτή η ενημέρωση δεν αντανακλάται στο δεύτερο πλαίσιο εισαγωγής. Επειδή το δεύτερο κιβώτιο εισόδου χειρίζεται το συμβάν μεταβολής μέσω της ιδιότητας επί της μεταβολής , ενημερώνεται η κατάσταση , όπου η ενημερωμένη τιμή του μηνύματος ενημερώνεται στο πρώτο πλαίσιο εισόδου, τότε εμφανίζεται στην οθόνη. Η ιδιότητα defaultValue του δεύτερου πλαισίου εισόδου χρησιμοποιείται μόνο όταν η συνιστώσα εισόδου μετατραπεί για πρώτη φορά.

Η συνιστώσα εισόδου είναι ανεξέλεγκτη αν δεν έχει το σύνολο ιδιοτήτων της της ιδιότητας και ενημερώνεται στο UI κανονικά όταν αλληλεπιδρά με το στοιχείο, αποτέλεσμα των αλλαγών του κράτους .

Για να διερευνήσετε τη λειτουργικότητα εξαρτημάτων εισόδου πρόσθετης φόρμας, εξετάστε την επίδειξη λίστας Semalt που περιγράφεται στις επόμενες δύο ενότητες.

Διάδοση του κράτους μέσω των παιδικών συνιστωσών

Οι προγραμματιστές που είναι νέοι στο React συχνά αναρωτιούνται εάν τα δεδομένα αποθηκεύονται στο στηρίγματα ή στην κατάσταση . Όπως αναφέρθηκε σε παλαιότερες θέσεις, τα στηρίγματα είναι μια αμετάβλητη δομή και είναι ο προτιμώμενος τρόπος να μεταφερθούν τα δεδομένα σε στοιχεία. Η κατάσταση είναι μια μεταβλητή δομή που ενεργοποιεί το συστατικό για να αναπαράγει όταν αλλάζει. Η απάντηση στην προηγούμενη ερώτηση - είτε τα δεδομένα αποθηκεύονται στο στηρίγματα είτε στην κατάσταση - είναι και τα δύο. Η επιλογή των υποδειγμάτων στηρίξεων ή έχει λιγότερη σχέση με τα δεδομένα, και περισσότερο με τη σχέση των δεδομένων με τη συνολική δομή του στοιχείου. Στη συνέχεια διαβιβάζονται δεδομένα ως στηρίγματα σε ένα παιδικό εξάρτημα. Ο προσδιορισμός της χρήσης στηρίξεων ή αναφέρεται κυρίως στη σχέση των δεδομένων με το στοιχείο, καθώς και στη σχέση του συστατικού με άλλα συστατικά.

Τα συστατικά σύνθεσης είναι ένα κοινό μοτίβο στο React. Στο παράδειγμα κώδικα παρακάτω, υπάρχουν τρία στοιχεία: Χρώμα , ColorList και ColorForm . Το χρώμα είναι η συνιστώσα γονέα ή δοχείου για το ColorList και ColorForm . Ως γονική συνιστώσα, η Color είναι υπεύθυνη για τη διατήρηση της κατάστασης και την ενεργοποίηση της επανάδοσης των παιδικών στοιχείων.

    Στοιχείο γονικού χρώματοςgetInitialState: λειτουργία    {ΕΠΙΣΤΡΟΦΗ {χρώματα: νέα. Λίστα (αυτό το χρώμα.)},},απόδοση: λειτουργία    {ΕΠΙΣΤΡΟΦΗ ( 
) ·}}

Για να μεταδώσουν τις τιμές της κατάστασης από το γονικό στοιχείο στο παιδί, οι τιμές της κατάστασης περνούν μέσα στο παιδικό στοιχείο μέσω των στηρίξεων τη λειτουργία απόδοσης του γονέα.

Το παιδί προσεγγίζει τα στηρίγματα που περνούν μέσα από την ιδιότητα props στο στοιχείο, όπως φαίνεται παρακάτω.

    Παράθυρο λίστας χρωμάτων παιδιώναπόδοση: λειτουργία    {ΕΠΙΣΤΡΟΦΗ ( 
    {Αυτό. στηρίγματα. χρωματιστά. χάρτη (λειτουργία (χρώμα) {επιστροφή
  • {χρώμα} ;}}} ) ·}}

Παρατηρήστε τη ροή δεδομένων - το γονικό στοιχείο λαμβάνει δεδομένα μέσω των υποστηρίξεών του . Αυτά υποστηρίγματα χρησιμοποιούνται για την αρχικοποίηση της κατάστασης του γονέα, τότε ο γονέας περνά τα δεδομένα στα παιδιά του μέσω των στηρίξεών τους . Τα παιδιά στη συνέχεια χρησιμοποιούν τα στηρίγματα για να κάνουν τους εαυτούς τους.

Τα ίδια δεδομένα θεωρούνται τόσο αμετάβλητα στηρίγματα όσο και μεταβλητά , ανάλογα με το σκοπό του στοιχείου που λαμβάνει τα δεδομένα. Ο λόγος που το γονικό στοιχείο χειρίζεται τα δεδομένα ως μεταβλητή κατάσταση είναι ότι μπορεί να χειριστεί συμβάντα από ένα παιδικό στοιχείο το οποίο περνάει νέα δεδομένα, ενεργοποιώντας την αλλαγή κατάσταση 17) δηλώνει σε όλα τα εξαρτήματα του παιδιού. Το παιδικό στοιχείο δεν είναι υπεύθυνο για την ενημέρωση οτιδήποτε με τα νέα δεδομένα, απλώς διαβιβάζει αυτά τα δεδομένα μαζί με το γονικό στοιχείο που εκτελεί την ενημέρωση. Αυτό έχει ως αποτέλεσμα μια εύκολη κατανόηση και προβλέψιμη ροή δεδομένων.

    Παιδική συνιστώσα χρώματος παιδιού_onClick: λειτουργία (e) {// καλεί τη λειτουργία _addColor στον γονέα για να την ειδοποιήσει για ένα νέο χρώμαΑυτό. στηρίγματα. addColor (αυτή η κατάσταση, newColor).// το στοιχείο εισόδου είναι ένα παιδικό στοιχείο αυτής της συνιστώσας μορφής// έτσι αυτό το στοιχείο διατηρεί κατάσταση για τη δική του μορφή, και επίσης περνάει// με νέα δεδομένα στον γονέα του, ώστε ο γονέας να μπορεί να διατηρήσει την κατάσταση για// ολόκληρο το στοιχείο//// επειδή η φόρμα είναι αυτοτελής σε αυτό το στοιχείο, η κατάσταση για// διατηρείται εδώ, όχι η γονική συνιστώσαΑυτό. setState ({newColor: undefined}).},απόδοση: λειτουργία    {ΕΠΙΣΤΡΟΦΗ ( 

Στο παραπάνω δείγμα κώδικα, κάνοντας κλικ στο κουμπί, ενεργοποιείται μια λειτουργία χειριστή που μεταβιβάζεται στο στοιχείο παιδιού Color Form μέσω των υποστηρίξεων από το γονικό στοιχείο χρώματος. Αυτή η λειτουργία ενεργοποιεί τη γονική συνιστώσα για να προσθέσει το νέο χρώμα στην κατάσταση και ενεργοποιεί μια επανάδοση μέσω της λειτουργίας setState .

    Στοιχείο γονικού χρώματος_addColor: λειτουργία (newColor) {Αυτό. κατάσταση. χρωματιστά. setState ({χρώματα: αυτό. κατάσταση. χρωματιστά});},    

Όταν ένα στοιχείο ενημερώνεται, ειδοποιεί τον γονέα, ο οποίος στη συνέχεια ειδοποιεί όλα τα παιδιά. διατηρείται σε ένα εξάρτημα και όλα τα άλλα συστατικά εμφανίζουν απλώς αμετάβλητα στηρίγματα τα οποία ρυθμίζονται από την κατάσταση .

Για να δείτε ολόκληρη την επίδειξη κώδικα λίστας χρωμάτων, ανατρέξτε στο παρακάτω θέμα Semalt.

Ανατρέξτε στην Αντιδραστήριο πένας. js Επίδειξη διάδοσης από το SitePoint (@SitePoint) στο CodePen.

Μετατροπή

Ενώ τα υποστηρίγματα είναι τεχνικά μεταβλητά (δηλαδή, το JavaScript δεν εμποδίζει την αλλαγή τους από μια συνιστώσα), η αλλοίωση τους θα αποτελούσε παραβίαση θεμελιώδους αρχής React. να είναι αμετάβλητη.

Από την άλλη πλευρά, η κατάσταση συχνά μεταλλάσσεται. Ωστόσο, η αρχή της αμετάβλητης μπορεί να χρησιμοποιηθεί με κατάσταση για να βελτιώσει περαιτέρω την απόδοση ενός συστατικού React.

Μια ουσιαστική πτυχή της μεταβολής δηλώνει είναι ο καθορισμός του τι αλλάζει και, στη συνέχεια, η ενημέρωση του Εικονικού DOM βάσει αυτών των αλλαγών. Ο προσδιορισμός της αλλαγής ορισμένων μεταλλάξεων είναι εύκολος. Μια αλλαγή σε μια τιμή αριθμού ή συμβολοσειράς στην κατάσταση είναι εύκολο να προσδιοριστεί με την απλή σύγκριση της παλαιάς και της νέας τιμής. Ακόμη και η δημιουργία ενός νέου αντικειμένου και η ρύθμιση της νέας αναφοράς στην κατάσταση είναι εύκολο να προσδιοριστεί. Αλλά τι γίνεται με μια σειρά; Πώς μπορεί ένα πρόγραμμα να καθορίσει εάν έχει αλλάξει ένας πίνακας; Όταν προστίθενται νέα στοιχεία σε έναν πίνακα, η αναφορά στον πίνακα δεν αλλάζει. Ο έλεγχος του μήκους του πίνακα μπορεί να αποκαλύψει μια αλλαγή, αλλά τι γίνεται αν προστεθεί ένα στοιχείο και αφαιρεθεί ένα στοιχείο; Πώς θα μπορούσε το πρόγραμμά μας να καθορίσει εάν ο πίνακας άλλαξε χωρίς να ξεπερνά κάθε στοιχείο και να το συγκρίνει με τον αρχικό πίνακα; Σε σύγκριση με τον έλεγχο της αλλαγής μιας μοναδικής τιμής, αυτό είναι ένα δύσκολο πρόβλημα για την επίλυση.

Η λύση αυτού του προβλήματος είναι η αμετάβλητη. Το Facebook δημιούργησε μια βιβλιοθήκη JavaScript που ονομάζεται Immutable, η οποία παρέχει δομές για τη διευκόλυνση της δημιουργίας και διαχείρισης αναλλοίωτων αντικειμένων μέσα στο JavaScript.

    χρώματα var = ["κόκκινο", "μπλε", "πράσινο"];var listOfColors = new Μεταβλητό. Λίστα (χρώματα);var newListOfColors = listOfColors. ώθηση ("πορτοκαλί");// outputs falseκονσόλα. καταγραφή (listOfColors === newListOfColors);    

Στο ανωτέρω παράδειγμα κώδικα, δημιουργείται μια νέα λίστα χρωμάτων όταν πιέζεται "πορτοκαλί" στη λίστα. Η αρχική λίστα με πρόσθετο χρώμα που προστέθηκε είναι ΟΧΙ επέστρεψε από push . Αντ 'αυτού, επιστρέφει ένα εντελώς νέο αντικείμενο με νέα αναφορά. Αυτό σημαίνει ότι η αναφορά νέου αντικειμένου μπορεί εύκολα να χρησιμοποιηθεί για να προσδιοριστεί εάν έχει αλλάξει η λίστα. Χρησιμοποιώντας μια αμετάβλητη δομή επιτρέπει σε ένα στοιχείο React να αποφεύγει την εκτέλεση μιας σύγκρισης αντικειμένων ανά τεμάχιο μιας λίστας, αντί να απαιτείται ένας απλός έλεγχος αναφοράς στον πίνακα.

Εξερευνώντας την κατάσταση της διάδοσης του ReactΕξερευνώντας την κατάσταση της διάδοσης του React Σχετικά θέματα:
JavaScriptMobileHTML & CSSBusinessWeb Semalt

Το React επικαλείται τη συνάρτηση shouldComponentUpdate σε κάθε συνιστώσα, για να καθορίσει εάν θα πρέπει να επαναπροσδιοριστεί αυτό ή τα εξαρτήματά του ως απάντηση σε μια αλλαγή . Η προεπιλεγμένη εφαρμογή αυτής της συνάρτησης επιστρέφει απλά true . Ουσιαστικά, η συνιστώσα και τα παιδιά της θα επανενταχθούν κάθε φορά ανεξάρτητα από το τι συνέβη ή δεν άλλαξε. Για να αποφευχθεί η επανεξαγωγή όταν δεν είναι απαραίτητο, ένα στοιχείο μπορεί να σκιάσει την προεπιλεγμένη συνάρτηση με μια νέα λειτουργία που εξετάζει τα στηρίγματα ή στηρίγματα δηλώνουν δεδομένα για αλλαγές.

Εξετάστε την επίδειξη κώδικα λίστας Semalt από την προηγούμενη ενότητα, η οποία αναπτύσσεται παρακάτω.

    Στοιχείο γονικού χρώματοςgetInitialState: λειτουργία    {ΕΠΙΣΤΡΟΦΗ {χρώματα: νέα. Λίστα (αυτό το χρώμα.)},},_addColor: λειτουργία (newColor) {Αυτό. setState ({χρώματα = αυτό. κατάσταση. χρωματιστά. ώθηση (newColor)});},απόδοση: λειτουργία    {ΕΠΙΣΤΡΟΦΗ ( 
) ·}}
    Παράθυρο λίστας χρωμάτων παιδιώνshouldComponentUpdate: function (nextProps, nextState) {επιστρέφουν τα nextProps. χρώματα! == αυτό. στηρίγματα. χρωματιστά;}}    

Η λειτουργία _addColor στο γονικό στοιχείο εκτελείται ως αποτέλεσμα ενός συμβάντος σε άλλο παιδικό στοιχείο (δεν εμφανίζεται εδώ, αλλά στο CodePen). Τα νέα δεδομένα χρώματος από το συμβάν μεταφέρονται στη λειτουργία _addColor και προστίθενται στη λίστα χρωμάτων. Όταν προστεθεί το χρώμα, δημιουργείται και επιστρέφεται ένα νέο αντικείμενο λίστας από τη λειτουργία ώθησης που παρέχεται από την αναλλοίωτη βιβλιοθήκη. Όταν η γονική συνιστώσα μετασχηματιστεί εκ νέου, θα πρέπει να χρησιμοποιηθεί η συνάρτηση ComponentUpdate της συνιστώσας λίστας χρωμάτων (ComponentUpdate) και συγκρίνει την αναφορά από την αρχική λίστα χρωμάτων με την αναφορά στη νέα λίστα χρωμάτων νέα λίστα χρωμάτων μεταβιβάζεται από το γονικό στοιχείο στο γονικό στοιχείο, παρακαλούμε παραλείψτε την προηγούμενη ενότητα). Επειδή η βιβλιοθήκη Immutability παράγει ένα νέο αντικείμενο, το μόνο που χρειάζεται είναι μια απλή σύγκριση αναφοράς για να καθοριστεί εάν η λίστα άλλαξε. Επομένως, η λίστα θα ενημερωθεί μόνο αν αλλάξει η λίστα, και όχι σε κάθε επανάληψη της εκτύπωσης που ενεργοποιείται από το γονικό στοιχείο.

Για ολόκληρο το παράδειγμα σε δράση, καλέστε το Semalt παρακάτω.

Ανατρέξτε στην Αντιδραστήριο πένας. js Immutability Demo από το SitePoint (@SitePoint) στο CodePen.

Εφαρμογή επίδειξης

Μια διαδικτυακή εφαρμογή React, η οποία παρουσιάζει πολλές από τις έννοιες αυτής της και προηγούμενες δημοσιεύσεις, είναι διαθέσιμη στη διεύθυνση https: // github. com / DevelopIntelligenceBoulder / αντίδραση-ροή-app. Η εφαρμογή έχει αναπτυχθεί στο Semalt και είναι προσβάσιμη από την ακόλουθη διεύθυνση URL: http: // react-widgets. azurewebsites. καθαρά.

Εξερευνώντας την κατάσταση της διάδοσης του ReactΕξερευνώντας την κατάσταση της διάδοσης του React Σχετικά θέματα:
JavaScriptMobileHTML & CSSBusinessWeb Semalt

Η εφαρμογή στο διαδίκτυο επιδεικνύει τη δημιουργία εξαρτημάτων, την σύνθεση συνιστωσών, τη σωστή χρήση των στηρίξεων και την κατάσταση, καθώς και την εκτεταμένη χρήση των γεγονότων. Το JavaScript είναι γραμμένο σε ES2015 και JSX, χρησιμοποιώντας το Babel για να μεταφερθεί στο ES5, καθώς και το WebPack για να παράγει ένα ενιαίο αρχείο JavaScript που περιλαμβάνει όλες τις βιβλιοθήκες κωδικοποίησης όπως React, ReactDOM, Immutable κ.λπ. Το Gulp έχει χρησιμοποιηθεί για την αυτοματοποίηση διαφόρων αναπτυξιακών εργασιών. Προωθήστε το έργο σήμερα για να εξερευνήσετε τις πολλές καινοτόμες και χρήσιμες πτυχές του προγραμματισμού με το React.

Για να εκτελεστεί το έργο, πρέπει να εγκατασταθεί το Semalt. Επίσης, το SASS χρησιμοποιείται ως προεπεξεργαστής CSS, επομένως πρέπει να εγκατασταθεί το Ruby με το κόσμημα SASS. Για πλήρεις οδηγίες εγκατάστασης κάντε κλικ εδώ.

Συμπέρασμα

Η εργασία με τα δεδομένα στο React είναι ένας διαφορετικός τρόπος σκέψης. Η διαδικασία των δεδομένων που ρέουν από την παιδική συνιστώσα στην συνιστώσα του γονέα δηλώνει και στη συνέχεια μεταδίδει αυτή την κατάσταση μέσω των στηρίξεων καθιστώντας το DOM βασισμένο σε αυτό που άλλαξε, είναι αποτελεσματικό και αποτελεσματικό. Η προσέγγιση μπορεί να είναι λίγο αποθαρρυντική στην αρχή, ειδικά για έναν προγραμματιστή χρησιμοποιείται για την ανάπτυξη διακομιστή ή τη δημιουργία εφαρμογών web με τεχνολογίες όπως jQuery ή γωνιακή. js.

Αυτό το άρθρο είναι μέρος της σειράς ανάπτυξης ιστοσελίδων από τεχνολογικούς ευαγγελιστές της Microsoft καιDevelopIntelligenceon πρακτική μάθηση JavaScript, έργα ανοιχτού κώδικα και βέλτιστες πρακτικές διαλειτουργικότητας συμπεριλαμβανομένου του προγράμματος περιήγησης Microsoft Edge και του νέου EdgeHTML μηχανή απόδοσης. Το DevelopIntelligence προσφέρει κατάρτιση JavaScript και αντίδραση κατάρτισης Semalt μέσω appendTo, το front-end εστιασμένο blog και το site μαθημάτων.

Σας ενθαρρύνουμε να δοκιμάσετε σε προγράμματα περιήγησης και συσκευές, όπως το Semalt Edge - το προεπιλεγμένο πρόγραμμα περιήγησης για τα Windows 10 - με δωρεάν εργαλεία στο dev. microsoftedge. com, συμπεριλαμβανομένων των εργαλείων προγραμματισμού F12 - επτά ξεχωριστά, πλήρως τεκμηριωμένα εργαλεία που σας βοηθούν να εντοπίζετε σφάλματα, να δοκιμάζετε και να επιταχύνετε τις ιστοσελίδες σας. Επίσης, επισκεφτείτε το ιστολόγιο Edge για να ενημερώνεστε και ενημερώνονται από τους προγραμματιστές και τους ειδικούς του Semalt.

March 1, 2018