window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() 7 συμβουλές και κόλπα στο React - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-05-09
Ανάπτυξη λογισμικού

7 συμβουλές και κόλπα στο React

The Codest

Mohamed El Amine DADDOU

React Προγραμματιστής

Ψάχνετε τρόπους να βελτιώσετε τον κωδικό σας React; Αυτό το άρθρο περιέχει συμβουλές και κόλπα που πρέπει να γνωρίζει κάθε προγραμματιστής React. Ας βουτήξουμε!

Χρήση TypeScript

Είτε μιλάμε μόνο για το react είτε για άλλες βιβλιοθήκες, η χρήση της Typescript θα βοηθήσει πολύ στην προσπάθεια να διατηρήσετε το κωδικός οργανωμένα. ας συγκρίνουμε τα εξής Javascript vs Typescript που ασχολείται με τύπους στηριγμάτων.

import PropTypes from 'prop-types'

function UserCard({ user }) {
return

{user.firstname}, {user.lastname}

}

UserCard.propTypes = {
user: PropTypes.shape({
firstname: PropTypes.string.isRequired,
επώνυμο: PropTypes.string.isRequired
...
})
}

function UserList({ users }) {
return

{users.map((user) => )}

}

UserList.propTypes = {
users: PropTypes.arrayOf(PropTypes.shape({
firstname: PropTypes.string.isRequired,
επώνυμο: PropTypes.string.isRequired
...
}))
}
διεπαφή χρήστη {
firstname: String!
επώνυμο: String!
...
}

function UserCard({ user }: { user: User }) {
return

{user.firstname}, {user.lastname}

}

function UserList({ users }: { users: User[] }) {
return

{users.map((user) => )}

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

Εκτός από αυτό, πολλές γνωστές βιβλιοθήκες javascript μεταναστεύουν στην Typescript. π.χ: AdonisJS

Ξεχωριστά στοιχεία Παρουσίασης & Εμπορευματοκιβωτίων

Ο διαχωρισμός των συστατικών Παρουσίασης και Περιέκτησης καθιστά τον κώδικά μας ευκολότερο να ελεγχθεί και να αιτιολογηθεί.

Στοιχεία παρουσίασης ασχολούνται με πώς φαίνονται τα πράγματα. Λαμβάνει το δεδομένα και συμπεριφορά από τα γονικά στοιχεία.

Στοιχεία εμπορευματοκιβωτίων ασχολούνται με πώς λειτουργούν τα πράγματα. Παρέχουν το δεδομένα και συμπεριφορά σε στοιχεία παρουσίασης ή άλλα στοιχεία δοχείου.

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

Ελέγξτε το ακόλουθο παράδειγμα με το User Component το οποίο χρησιμοποιείται με διαφορετικά δοχεία που παρέχουν διαφορετικά δεδομένα και συμπεριφορά.

function BuyerContainer() {
return
}

function SellerContainer() {
return
}

function UserComponent({ name, onClick }) {
return

}

Χρήση React Hooks και λειτουργικά συστατικά Τα λειτουργικά συστατικά "που αναφέρονταν ως Stateless Components πριν" δεν είναι πλέον stateless.Χάρη στα React Hooks, τώρα μπορείτε να χρησιμοποιήσετε το άγκιστρο useState για να αποθηκεύσετε την κατάσταση σε ένα λειτουργικό συστατικό. ή ακόμα και να χρησιμοποιήσετε τον κύκλο ζωής του συστατικού χρησιμοποιώντας το useEffect. Τα λειτουργικά συστατικά είναι εύκολο να διαβαστούν και να δοκιμαστούν. Ο πυρήνας React Core έχει μερικά άλλα χρήσιμα άγκιστρα που μπορείτε να εξερευνήσετε στην Αναφορά άγκιστρων. Το εκπληκτικό είναι ότι μπορείτε επίσης να ορίσετε τα προσαρμοσμένα σας hooks. Στο ακόλουθο παράδειγμα, δημιουργήσαμε ένα προσαρμοσμένο άγκιστρο react που ονομάζεται useDebounce. Το οποίο χρησιμοποιείται για τον περιορισμό των κλήσεων API της αυτόματης συμπλήρωσης όταν αλλάζει το κείμενο εισόδου.

import { useEffect } from 'react',
import { debounce } from 'lodash',
export default function useDebounce( fn, delay = 500 ) {
const debounced = useMemoOne( () => debounce( fn, delay ), [
fn,
delay,
] );
useEffect( () => () => debounced.cancel(), [ debounced ] ),
return debounced,
}
export default function SearchComponent()
const fetchAutoComplete = useDebounce((e) => {
      // Fetch API (προαιρετικό)
}, 1000) // 1 sec

return (

{...}
)
}

Εκτός αυτού, τα άγκιστρα React είναι μια εξαιρετική αντικατάσταση για τα εξαρτήματα ανώτερης τάξης (HoCs). Styled Component Το Styled Component είναι μια βιβλιοθήκη που επιτρέπει την εισαγωγή της Dynamic CSS σε επίπεδο συστατικού. αξιοποιώντας παράλληλα το πλεονέκτημα του ES. Κάνει τα συστατικά σας πιο προβλέψιμα και επαναχρησιμοποιήσιμα. Ξεχάστε ότι σπαταλάτε πολύ χρόνο ψάχνοντας το σωστό όνομα κλάσης για ένα στοιχείο, ενώ προσπαθείτε να αποφύγετε τη χρήση ενός υπάρχοντος. Με τα Styled Components διασφαλίζετε ότι τα στυλ σας είναι οριοθετημένα στο στοιχείο και τα αυτόματα παραγόμενα ονόματα κλάσεων στο βήμα της δημιουργίας. Εκτός από αυτό, δεν ήταν ποτέ ευκολότερο να δημιουργήσετε δυναμικά CSS. τα στυλ σας θα δημιουργούνται σύμφωνα με τα στηρίγματα που περνούν στο στοιχείο. Στο ακόλουθο παράδειγμα, το στυλ div εξαρτάται τόσο από το περιγραφόμενο prop όσο και από το παγκόσμιο θέμα.

const Wrapper = styled.div`

  border: ${props => props.outlined ? '1px solid' : 'none'},

    background: ${props => props.theme.light ? 'black' : 'white'}

Το τελευταίο σημείο σχετικά με τα στυλιζαρισμένα συστατικά είναι ότι βελτιώνει την απόδοση, καθώς δεν φορτώνει περιττά στυλ αχρησιμοποίητων συστατικών. Βιβλιοθήκη συμπλήρωσης υποδοχών Έστω ότι έχετε ορίσει μια διάταξη για την εφαρμογή react σας. τότε θέλετε να προσθέσετε ένα widget στην πλαϊνή μπάρα μόνο για μια συγκεκριμένη σελίδα. Αν δεν είχατε λάβει υπόψη σας αυτή την περίπτωση από την αρχή Μπορεί να απαιτήσει μια τεράστια αλλαγή στη διάταξη. Αλλά χρησιμοποιώντας μια βιβλιοθήκη όπως η ‣ Μπορείτε απλά να ορίσετε μια υποδοχή στην πλαϊνή μπάρα. Στη συνέχεια, γεμίστε αυτή την υποδοχή με widgets μόνο για συγκεκριμένες σελίδες. με αυτόν τον τρόπο θα αποφύγετε το πέρασμα σημαιών σε όλο το δέντρο των στοιχείων για να αποκτήσετε πρόσβαση στο Sidebar. Έχει παρόμοια συμπεριφορά με το React Portals το οποίο είναι επίσης μια εξαιρετική λύση για περιπτώσεις όπως Modals, Tooltips...

import { Slot, Fill, Provider } from 'react-slot-fill',
const Sidebar = (props) =>
 
export default Toolbar,
Sidebar.Item = (props) =>

{ props.label }
const Widget = () =>
[

];
const Page = ({παιδιά}) =>

{children}

const HomePage = () =>

μια σελίδα χωρίς Widjet
const DashboardPage = () =>

μια σελίδα με Widjet

Εξαρτήματα ανώτερης τάξης Ακόμα και αν τα άγκιστρα React αντικαθιστούν τα HOC στις περισσότερες περιπτώσεις. Τα HoCs εξακολουθούν να είναι μια εξαιρετική επιλογή όσον αφορά την απόκρυψη της πολυπλοκότητας από συστατικά όπως η παροχή πολλαπλών στηριγμάτων σε συστατικά Σελίδας ή η απόδοση υπό όρους (Ιδιωτικές διαδρομές, κατάσταση φόρτωσης ...) Το ακόλουθο παράδειγμα δείχνει πώς μπορούμε να ενθυλακώσουμε την πολυπλοκότητα τόσο των Ιδιωτικών διαδρομών όσο και των κοινών στηριγμάτων Σελίδας σε επαναχρησιμοποιήσιμα HoCs που εφαρμόζονται σε όλες τις σελίδες της εφαρμογής. Λάβετε υπόψη ότι οι περισσότερες περιπτώσεις HoCs μπορούν να αντικατασταθούν από React Hooks. και ότι μπορούμε κατά λάθος να παρακάμψουμε τα props από σύνθετα HoCs. Έτσι, παρακαλούμε να χρησιμοποιείτε HoCs μόνο όταν είναι απαραίτητο για να διατηρήσετε τα στοιχεία της σελίδας καθαρότερα. διαφορετικά χρησιμοποιήστε React Hooks.

function withPrivateRoute(Component) {
...
return function PrivateRoute(props) {
if (!userConnected) return ,
return ,
};
}
function withPageProps(Component) {
...
return function privateRoute(props) {
return ,
};
}
function ProfilePage({ navigation, currentPath, currentUser}) {
return
Σελίδα προφίλ
}
export default withPrivateRoute(withPageProps(ProfilePage))

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

class ErrorBoundary extends React.Component {
constructor(props) {
super(props),
this.state = { hasError: false },
}
static getDerivedStateFromError(error) {
return { hasError: true },
}
componentDidCatch(error, errorInfo) {
logErrorToMySentry(error, errorInfo),
}
render() {
if (this.state.hasError) {
return
Κάτι πήγε στραβά ! Επικοινωνήστε με τον διαχειριστή
;
}
return this.props.children,

}
}

Σχετικά άρθρα

Ανάπτυξη λογισμικού

Εργαλεία Javascript σε δράση

Ανακαλύψτε μερικά εργαλεία ανάκτησης JavaScript για να βελτιώσετε το παιχνίδι προγραμματισμού σας. Μάθετε περισσότερα για το ESLint, το Prettier και το Husky!

The Codest
Reda Salmi React Προγραμματιστής
Λύσεις Enterprise & Scaleups

10 εταιρείες του Ντουμπάι που αξίζει να παρακολουθήσετε το 2020

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

Τόνος Pinar

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek