ToolDeck

HTML to JSX

React के लिए HTML को JSX में बदलें — class→className, style स्ट्रिंग→ऑब्जेक्ट

उदाहरण देखें

HTML इनपुट

JSX आउटपुट

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है
JSX आउटपुट यहाँ दिखेगा…

HTML to JSX रूपांतरण क्या है?

HTML to JSX रूपांतरण मानक HTML मार्कअप को JSX सिंटैक्स में बदलने की प्रक्रिया है जिसे React कम्पोनेंट रेंडर कर सकते हैं। JSX देखने में HTML जैसा लगता है, लेकिन यह JavaScript naming conventions और नियमों का पालन करता है। class जैसे एट्रिब्यूट className बन जाते हैं, for बन जाता है htmlFor, और इनलाइन style स्ट्रिंग JavaScript ऑब्जेक्ट से बदल दी जाती हैं। ये बदलाव आवश्यक हैं क्योंकि JSX, React.createElement() कॉल्स में संकलित होता है, जहाँ एट्रिब्यूट नाम HTML एट्रिब्यूट नामों की बजाय DOM API प्रॉपर्टी नामों से मेल खाने चाहिए।

HTML एट्रिब्यूट और JSX प्रॉप्स के बीच मैपिंग React के DOM element documentation में define की गई है। React multi-word attributes के लिए camelCase का उपयोग करता है (tabindex, tabIndex बन जाता है; maxlength, maxLength बन जाता है) क्योंकि JavaScript पहचानकर्ताओं में हाइफ़न नहीं हो सकते। <img>, <br>, और <input> जैसे स्व-बंद टैग को JSX में अंत में स्लैश शामिल करना होगा (<img />) क्योंकि JSX, XML नियमों का पालन करता है जहाँ हर टैग को स्पष्ट रूप से बंद करना होता है।

htmlToJsxContent.whatBody3

HTML to JSX कनवर्टर का उपयोग क्यों करें?

दर्जनों HTML एलिमेंट में मैन्युअल रूप से एट्रिब्यूट पुनर्नामकरण और style स्ट्रिंग पुनर्लेखन धीमा और error-prone है। एक कनवर्टर एक साथ सभी रूपांतरण करता है, जिससे आप किसी भी स्रोत से HTML पेस्ट करके कुछ ही सेकंड में वैध JSX प्राप्त कर सकते हैं।

तत्काल रूपांतरण
कोई भी HTML स्निपेट पेस्ट करें और JSX आउटपुट तुरंत प्राप्त करें। कनवर्टर एक ही पास में class, for, style, इवेंट हैंडलर, बूलियन एट्रिब्यूट और स्व-बंद टैग संभालता है।
🔒
गोपनीयता-प्रथम प्रोसेसिंग
सभी रूपांतरण आपके ब्राउज़र में स्थानीय रूप से चलते हैं। आपका HTML कभी भी पृष्ठ नहीं छोड़ता, इसलिए आप आंतरिक कोड, API एंडपॉइंट या संवेदनशील सामग्री वाले मार्कअप को सुरक्षित रूप से कनवर्ट कर सकते हैं।
📋
कोई अकाउंट या सेटअप नहीं
पृष्ठ खोलें और कनवर्ट करना शुरू करें। कोई लॉगिन आवश्यक नहीं, कोई npm पैकेज इंस्टॉल नहीं करना, कोई build step configure नहीं करना। आधुनिक ब्राउज़र वाले किसी भी डिवाइस पर काम करता है।
🔧
सम्पूर्ण एट्रिब्यूट कवरेज
className, htmlFor, tabIndex, readOnly, autoComplete और 20 से अधिक अन्य सहित सभी मानक HTML-to-JSX एट्रिब्यूट मैपिंग कनवर्ट करता है। onclick को onClick इवेंट हैंडलर पुनर्नामकरण भी संभालता है।

HTML to JSX उपयोग के मामले

फ्रंटएंड डेवलपर: टेम्पलेट स्थानांतरण
किसी मौजूदा HTML पृष्ठ या कम्पोनेंट को React प्रोजेक्ट में स्थानांतरित करते समय, सैकड़ों पंक्तियों में class और for एट्रिब्यूट मैन्युअल रूप से ढूँढने की बजाय मार्कअप को कनवर्टर में पेस्ट करें।
बैकएंड इंजीनियर: HTML ईमेल एम्बेड करना
ईमेल टेम्पलेट सादे HTML में बनाए जाते हैं। React एडमिन डैशबोर्ड या प्रीव्यू कम्पोनेंट में उन्हें रेंडर करते समय, className और style सिंटैक्स त्रुटियों से बचने के लिए HTML को वैध JSX में बदलें।
DevOps: डैशबोर्ड विजेट कनवर्ट करना
मॉनिटरिंग डैशबोर्ड अक्सर कस्टम विजेट के लिए HTML स्निपेट उपयोग करते हैं। Retool जैसे React-आधारित आंतरिक टूल प्लेटफ़ॉर्म में एकीकृत करते समय इन्हें JSX में बदलें।
QA इंजीनियर: बग रिपोर्ट पुनरुत्पादन
जब किसी बग रिपोर्ट में कच्चा HTML आउटपुट हो, तो दृश्य निरीक्षण और डीबगिंग के लिए इसे React टेस्ट हार्नेस या Storybook स्टोरी में शीघ्रता से रेंडर करने हेतु JSX में बदलें।
डिज़ाइनर: HTML मॉकअप से प्रोटोटाइप बनाना
Figma जैसे डिज़ाइन टूल HTML/CSS निर्यात करते हैं। निर्यात किए गए मार्कअप को JSX में बदलें ताकि मैन्युअल एट्रिब्यूट सफाई के बिना इसे सीधे React प्रोटोटाइप में डाला जा सके।
छात्र: React सिंटैक्स सीखना
HTML इनपुट और JSX आउटपुट को साथ-साथ तुलना करें ताकि यह समझ सकें कि कौन से एट्रिब्यूट बदलते हैं और क्यों। रूपांतरण देखने से React नामकरण परंपराएँ केवल दस्तावेज़ीकरण पढ़ने की तुलना में याद करना आसान हो जाता है।

HTML to JSX एट्रिब्यूट मैपिंग संदर्भ

नीचे दी गई तालिका उन HTML एट्रिब्यूट को सूचीबद्ध करती है जो JSX में बदलने पर परिवर्तित होते हैं। यहाँ सूचीबद्ध नहीं किए गए एट्रिब्यूट (id, src, href, alt, placeholder आदि) अपरिवर्तित रहते हैं क्योंकि उनके HTML नाम पहले से ही संबंधित DOM API प्रॉपर्टी नामों से मेल खाते हैं।

HTML एट्रिब्यूटJSX प्रॉपटिप्पणियाँ
classclassNameReserved word in JavaScript
forhtmlForReserved word in JavaScript
tabindextabIndexcamelCase convention
readonlyreadOnlycamelCase convention
maxlengthmaxLengthcamelCase convention
minlengthminLengthcamelCase convention
cellpaddingcellPaddingcamelCase convention
cellspacingcellSpacingcamelCase convention
rowspanrowSpancamelCase convention
colspancolSpancamelCase convention
enctypeencTypecamelCase convention
autocompleteautoCompletecamelCase convention
autofocusautoFocuscamelCase convention
autoplayautoPlaycamelCase convention
contenteditablecontentEditablecamelCase convention
crossorigincrossOrigincamelCase convention
novalidatenoValidatecamelCase convention
allowfullscreenallowFullScreencamelCase convention
spellcheckspellCheckcamelCase convention
http-equivhttpEquivHyphen removed, camelCase
onclickonClickEvent handler camelCase
onchangeonChangeEvent handler camelCase
onsubmitonSubmitEvent handler camelCase

इनलाइन Style रूपांतरण: HTML बनाम JSX

इनलाइन style, HTML to JSX रूपांतरण का सबसे error-prone भाग है क्योंकि मान स्वरूप और प्रॉपर्टी नाम दोनों बदलते हैं:

HTML style एट्रिब्यूट
सेमीकोलन से अलग की गई CSS घोषणाओं की एक स्ट्रिंग। प्रॉपर्टी नाम kebab-case उपयोग करते हैं (background-color, font-size, border-radius)। मान हमेशा स्ट्रिंग होती हैं, इकाइयों सहित संख्यात्मक मान भी।
<div style="background-color: #fff;
  font-size: 14px;
  margin-top: 10px;">
JSX style प्रॉप
camelCase प्रॉपर्टी नामों वाला JavaScript ऑब्जेक्ट (backgroundColor, fontSize, borderRadius)। स्ट्रिंग मान उद्धृत होती हैं। इकाई-रहित संख्यात्मक मान (lineHeight, opacity, zIndex, flexGrow) सादी संख्याएँ हो सकती हैं।
<div style={{
  backgroundColor: '#fff',
  fontSize: '14px',
  marginTop: 10
}}>

कोड उदाहरण

ये उदाहरण दिखाते हैं कि विभिन्न भाषाओं और परिवेशों में HTML को JSX में प्रोग्रामेटिक रूप से कैसे बदला जाए। प्रत्येक में एट्रिब्यूट पुनर्नामकरण, style रूपांतरण और स्व-बंद टैग हैंडलिंग शामिल है।

JavaScript (DOM API)
// Simple attribute conversion using string replacement
function htmlToJsx(html) {
  return html
    .replace(/\bclass=/g, 'className=')
    .replace(/\bfor=/g, 'htmlFor=')
    .replace(/\btabindex=/g, 'tabIndex=')
    .replace(/<!--([\s\S]*?)-->/g, '{/*$1*/}')
}

htmlToJsx('<div class="box" tabindex="0"><!-- note --></div>')
// → '<div className="box" tabIndex="0">{/* note */}</div>'
JavaScript (html-react-parser)
import parse from 'html-react-parser'

// Parse HTML string into React elements (handles all JSX rules)
const element = parse('<div class="card"><img src="photo.jpg" alt="Photo"></div>')
// Returns: React.createElement('div', { className: 'card' },
//   React.createElement('img', { src: 'photo.jpg', alt: 'Photo' }))

// With custom element replacement
const options = {
  replace(domNode) {
    if (domNode.name === 'img') {
      return <OptimizedImage src={domNode.attribs.src} alt={domNode.attribs.alt} />
    }
  }
}
const custom = parse('<img src="photo.jpg" alt="Photo">', options)
Python (BeautifulSoup)
from bs4 import BeautifulSoup
import re

ATTR_MAP = {
    'class': 'className', 'for': 'htmlFor',
    'tabindex': 'tabIndex', 'readonly': 'readOnly',
    'maxlength': 'maxLength', 'autocomplete': 'autoComplete',
}

def html_to_jsx(html: str) -> str:
    """Convert HTML attribute names to JSX equivalents."""
    for html_attr, jsx_attr in ATTR_MAP.items():
        html = re.sub(rf'\b{html_attr}=', f'{jsx_attr}=', html)
    # Convert HTML comments to JSX comments
    html = re.sub(r'<!--(.*?)-->', r'{/*\1*/}', html)
    return html

print(html_to_jsx('<label for="email" class="field">Email</label>'))
# → '<label htmlFor="email" className="field">Email</label>'
Go
package main

import (
    "fmt"
    "strings"
)

var attrMap = map[string]string{
    "class=":    "className=",
    "for=":      "htmlFor=",
    "tabindex=": "tabIndex=",
    "readonly":  "readOnly",
}

func htmlToJSX(html string) string {
    result := html
    for old, new := range attrMap {
        result = strings.ReplaceAll(result, old, new)
    }
    // Convert comments
    result = strings.ReplaceAll(result, "<!--", "{/*")
    result = strings.ReplaceAll(result, "-->", "*/}")
    return result
}

func main() {
    html := `<div class="wrapper"><input readonly tabindex="1"></div>`
    fmt.Println(htmlToJSX(html))
    // → <div className="wrapper"><input readOnly tabIndex="1"></div>
}

अक्सर पूछे जाने वाले प्रश्न

HTML और JSX में क्या अंतर है?
JSX, React द्वारा उपयोग किया जाने वाला JavaScript के लिए एक सिंटैक्स विस्तार है। यह HTML जैसा दिखता है लेकिन React.createElement() कॉल्स में संकलित होता है। मुख्य अंतर हैं: class, className बन जाता है; for, htmlFor बन जाता है; इनलाइन style CSS स्ट्रिंग की बजाय JavaScript ऑब्जेक्ट उपयोग करते हैं; और सभी टैग स्पष्ट रूप से बंद होने चाहिए (शून्य एलिमेंट जैसे <img /> सहित)। JSX घुंघराले ब्रैकेट के अंदर JavaScript एक्सप्रेशन एम्बेड करने की भी अनुमति देता है।
React, class की बजाय className क्यों उपयोग करता है?
'class' शब्द JavaScript में एक आरक्षित कीवर्ड है। चूँकि JSX JavaScript फ़ंक्शन कॉल्स में संकलित होता है, इसलिए प्रॉप नाम के रूप में 'class' का उपयोग करने से सिंटैक्स त्रुटि होगी। React ने 'className' चुना क्योंकि यह DOM API प्रॉपर्टी नाम (element.className) से मेल खाता है जिसे JavaScript पहले से ही DOM एलिमेंट पर CSS क्लास पढ़ने और सेट करने के लिए उपयोग करता है।
क्या मुझे HTML को JSX में मैन्युअल रूप से बदलना होगा?
नहीं। आप इस टूल जैसे ऑनलाइन कनवर्टर का उपयोग कर सकते हैं, या htmltojsx (npm) या html-react-parser जैसी लाइब्रेरी से स्वचालित कर सकते हैं। बड़े पैमाने पर स्थानांतरण के लिए, codemod या jscodeshift जैसे टूल संपूर्ण कोडबेस रूपांतरित कर सकते हैं। मैन्युअल रूपांतरण केवल कुछ पंक्तियों के छोटे स्निपेट के लिए व्यावहारिक है।
JSX में इनलाइन style कैसे संभाले जाते हैं?
JSX में, style एट्रिब्यूट CSS स्ट्रिंग की बजाय JavaScript ऑब्जेक्ट स्वीकार करता है। प्रॉपर्टी नाम camelCase उपयोग करते हैं (background-color की बजाय backgroundColor)। मान डिफ़ॉल्ट रूप से स्ट्रिंग होती हैं, लेकिन lineHeight, opacity और zIndex जैसी कुछ संख्यात्मक प्रॉपर्टी इकाइयों के बिना सादी संख्याएँ स्वीकार करती हैं। style={{ color: 'red' }} में दोहरे घुंघराले ब्रैकेट विशेष सिंटैक्स नहीं हैं: बाहरी ब्रैकेट JSX एक्सप्रेशन हैं, और आंतरिक ब्रैकेट JavaScript ऑब्जेक्ट लिटरल हैं।
क्या मैं JSX में HTML टिप्पणियाँ उपयोग कर सकता हूँ?
नहीं। HTML टिप्पणियाँ (<!-- comment -->) JSX में वैध नहीं हैं। इसके बजाय घुंघराले ब्रैकेट में लपेटी गई JavaScript ब्लॉक टिप्पणियाँ उपयोग करें: {/* comment */}। यह कनवर्टर रूपांतरण स्वचालित रूप से संभालता है। JSX टिप्पणियाँ किसी पैरेंट एलिमेंट के अंदर होनी चाहिए, कम्पोनेंट रिटर्न के शीर्ष स्तर पर नहीं।
JSX में कौन से HTML एट्रिब्यूट समान रहते हैं?
अधिकांश HTML एट्रिब्यूट JSX में अपने मूल नाम बनाए रखते हैं। सामान्य उदाहरणों में id, src, href, alt, type, name, value, placeholder, disabled, hidden और सभी data-* और aria-* एट्रिब्यूट शामिल हैं। केवल वे एट्रिब्यूट बदलने की आवश्यकता है जिनका HTML नाम DOM API प्रॉपर्टी नाम से भिन्न है: class से className, for से htmlFor, और बहु-शब्द एट्रिब्यूट जो lowercase से camelCase में स्विच होते हैं।
क्या dangerouslySetInnerHTML HTML को JSX में बदलने के समान है?
नहीं। dangerouslySetInnerHTML, React की रेंडरिंग को दरकिनार करके कच्चा HTML सीधे DOM में इंजेक्ट करता है, जिससे XSS कमज़ोरियों का खतरा होता है। HTML को JSX में बदलने से वास्तविक React एलिमेंट बनते हैं जो React के वर्चुअल DOM से होकर गुज़रते हैं और डिफ़ॉल्ट रूप से सुरक्षित होते हैं। उस स्थिर मार्कअप के लिए HTML-to-JSX रूपांतरण उपयोग करें जिसे आप नियंत्रित करते हैं। dangerouslySetInnerHTML केवल तब उपयोग करें जब आपको किसी बाहरी स्रोत से विश्वसनीय HTML रेंडर करना हो जिसे JSX में नहीं बदला जा सकता।