Μετατροπέας HTML > JSX
HTML → JSX// JSX output appears here
Ο Λόγος που Επιβάλλεται η μετατροπή του HTML σε JSX;
Oταν μεταφέρετε (Migrate) ιστοσελίδες HTML — ή (Exports) απο σχεδιαστικά εργαλεία όπως το Figma— σε React Components, η ΜΗ ΑΥΤΟΜΑΤΗ Μετατροπή ειναι κόλαση. Πρέπει να αλλάξετε με το χέρι ΤΑ ΠΑΝΤΑ: Τα `class` σε `className`, το `for` σε `htmlFor`, και (Το χειρότερο) να φτιάξετε Όλα τα `style="..."` attributes σε JavaScript { Objects }. Ο Μετατροπέας μας Tα ΚΑΝΕΙ ΟΛΑ ΜΟΝΟΣ ΤΟΥ.. ακαριαία! Εσείς επικεντρώνεστε μόνο.. στη Λογική (Hooks & States)!
Σχολιαστική Μετατροπή - (CamelCase) Χαρακτηριστικών
Μετατρέπει τα (class—>className), (for—>htmlFor), (tabindex—>tabIndex), (maxlength—>maxLength), ώστε o Server Rendering / React Να μην 'Ουρλιάζει' (Warnings).
Inline Styles Objects (Tέλος οι Συμβολοσειρές)
Μαγικά μεταφράζει το: `style="color:red; margin-top:10px"` — σε `style={{color:'red', marginTop: '10px'}}` (Μορφή React Native/JS Object).
Αυτόματο (Closing) κλείσιμο Void/Κενών Tags
Το JSX είναι σαν το (XML) ! Διαλύεται αν δεν κλείσουν τα ετικετάκια. Ο Αλγόριθμος κλείνει τα (`<br>`, `<img src=>`, `<input>`) σε.. ( `<br />` ) !
Μετατρέψτε εκατοντάδες γραμμές HTML .. Σε 3 Bήματα!
Επικολλήστε Οποιονδήποτε HTML Κώδικα
Αντιγράψτε τον HTML κώδικα από το Webflow, Bootstrap, figma export ή WordPress κι επικολλήστε τον άφοβα.
Mετατροπή (Auto-Magic) Conversion
Ο Μετατροπέας διαβάζει τα Nodes (DOM) και ακαριαία αλλάζει τα attributes, τα σχόλια(comments) και τα Inline styles.
Αντιγραφή -> (React Component)
Έτοιμο! Πατήστε Copy(Αντιγραφή). Τώρα μπορείτε να το πετάξετε στο (Return ()) // Μεσα στην Function (Render) του Component Σας.
Κλασσικές περιπτώσεις Πού απαιτείται JSX-Converter
Μετάβαση-Migaration Σε React / Next.js
Aναβάθμιση ενός παλιού (Legacy/Jquery) Ιστότοπου... Κομμάτι-Κομμάτι- Σε νέα React Components.
Εισαγωγή Bootstrap / Tailwind / UI Frameworks
Επειδή τα ελεύθερα Snippets (Πχ του TailwindUi) Είναι σε HTML.. θέλουν 1 πέρασμα απο εδώ.. πριν μπουν στo React-app σας.
React-Email / JSX Templates
Όταν φτιάχνετε HTML Emails Newsletter, μπορείτε να μετατρεψετε Παραδοσιακά Tables(HMTL) σε JSX δομές για χρήση με Vercel/React-emails.
Αποσύνδεση του CMS (Headless / WordPress To Front)
Μεταφέρετε Σκηνικά/Σχεδιαστικά κομμάτια (Themes) απο κλασικά CMS Blocks -- Σε καθαρά (FrontEnd) Headless περιβάλλοντα (Gatsby/Next.js).
React / (HTML vs JSX) ... Τα Κρυφά Μυστικά
✓ Το Μεγάλο Δράμα.. (class => className)!
Δέκα (10) Γλωσσολογικά χρόνια πίσω: Το 'class', αποτελεί ΔΕΣΜΕΥΜΕΝΗ Λέξη στην ιδρυματική Javascript ! ((Για Class/OOO Programing!)). Γι' αυτό το React.. αποφάσισε να χρησιμοποιήσει το `className` - ως Λύση!
✓ Form Labels.. (for => htmlFor)
Όπως και με το 'class', το άμοιρο 'for' ειναι συνδεδεμένο με τη... Λούπα `for (let i=0) ` ... Ετσι για να λειτουργούν τα checkbox/Forms (Accessibility), απαιτείται να μετατραπεί σε `htmlFor=`!
✓ Τα Inline Event Handlers -(OnClicks) Μεταφράζονται ... Χειροκίνητα !
Εάν το HTML σας είχε `onclick="RunMyApp()"` .. Ο Converter μας (επίτηδες) δεν το αλλάζει ριζικά. Εσείς ΠΡΕΠΕΙ να καλέσετε την λειτουργία ΩΣ Function pointer (Π.χ. `onClick={() => setMyApp()}`).
✓ Tα Σχόλια/Comments του HTML... Μετατρέπονται σε JS-JSX Μπλοκ!
Τα Σημάδια `<!-- Auto σχόλιο -->` Στο JSX μετατρέπονται πάντα: Σε { /* Σχόλιο */ } Διαφορετικά... Θα φαινόντουσαν στον Χρήστη !
❓ Απορίες.. για (React.js Components)
Τι στο καλό είναι Τελικά το JSX;
Το JSX(JavaScript XML) - Είναι μία ('Tροποποιημένη - Εξωτική Συντακτική γλώσσα') του React! Μασκαρεύει την JavaScript ώστε.. Να Την Πληκτρολογείτε σαν (HTML). Αφού 'κάνετε Build', το (Babel / WebPack) Μετατρέπει ολα όσα γράψατε(<img> / <div>) .. ΣΕ καθαρές Javascript Functions: `React.createElement('div', { className: 'my-div'})` !
Εκτός από το Class Name... υπάρχουν και αλλά Attributes Που ΑΛΛΑΖΟΥΝ ΟΝΟΜΑ;
ΝΑΙ! Στο React-JSX όλα τα Attributes πρέπει πλέον να γράφονται Χωρίς-Παύλες Και με (CamelCase). Π.χ το `tabindex` => Γίνεται `tabIndex`. Το `stroke-width` (Στα SVG) => Γίνεται `strokeWidth`. O Converter μας, αλλάζει/διορθώνει (εκατοντάδες) απο αυτά τα κρυμμένα attributes!
Κάποιες φορές το React χτυπάει σφάλμα (Adjacent JSX elements must be wrapped)... Τι φταίει;
Το React απαιτεί Αυστηρά! -> ΚΑΘΕ Function (Return ())... Να επιστρέφει -ΜΟΝΟ ΕΝΑ- Kεντρικό-Tοp-Level Element (Γονέα/Πατέρα). Αν ο Converter σας επιστρέψει 2 Κουτιά <div> Ανεξάρτητα: Θελουν τύλιγμα! ΛΥΣΗ: Τυλίξτε τα με το Fragments `<> ..τα div σας.. </>` (Άδειο Element-Δε φαινεται πουθενά στο HTML).
Γιατί να μην βάλω 'class=' στο React μου.. Σιγά το πράγμα.. Διορθώνεται μόνο του πίσω-πίσω!
Λειτουργικά ; Ναι, το React (στα μοντέρνα του Versions) ειναι αρκετά έξυπνο ώστε να το τρέξει (Compile) και να προσπαθήσει να το κάνει 'Fix' ! Όμως, Βομβαρδίζει το Console/Terminals σας.. με (Κόκκινα Red Error / Warnings) !! Δεν επιτρέπετε ΠΟΤΕ να βγαίνει (Warning/Error) σε Professional Παραγωγικό Κώδικα.