ReactJS नॉन-ब्रेकिंग स्पेस के साथ स्ट्रिंग रेंडर करता है


90

मेरे पास कुछ प्रॉप्स हैं जिनमें एक स्ट्रिंग है जिसमें & जैसे अक्षर हो सकते हैं। इसमें रिक्त स्थान भी हैं। मैं सभी स्थानों को बदलना चाहता हूं  

वहाँ एक आसान तरीका है मैं यह कर सकता हूँ? ध्यान रखें कि मैं इस सिंटैक्स का उपयोग करके प्रस्तुत नहीं कर सकता:

<div dangerouslySetInnerHTML={{__html: myValue}} />

क्योंकि मुझे पहले किसी HTML संस्थाओं को उनके मार्कअप से बदलना होगा। मैं ऐसा नहीं करना चाहता, यह बहुत कम स्तर लगता है।

कोई तरीका है तो मुझसे यह हो सकता है?


1
यह प्रतिक्रिया से संबंधित क्यों है?
मार्सेलो बीज़र्रा

1
यह पूरी तरह से स्पष्ट नहीं है कि आप क्या करना चाहते हैं। क्या आप बस सभी रिक्त स्थान को बदलना चाहते हैं &nbspl;, क्या आप HTML टैग्स को शाब्दिक रूप से प्रदर्शित करना चाहते हैं या कुछ और है जो आप करना चाहते हैं?
बोजैंगल्स

यह कब myValue सुलभ है पर निर्भर करता है। आप उपयुक्त जीवन चक्र समारोह में इसके लिए प्रतीक्षा कर सकते हैं, इसे पार्स कर सकते हैं और एक parsedध्वज सेट कर सकते हैं जो कई पार्सिंग को रोकता है।
डेविड हेलसिंग

अगर आप रेंडर करना चाहते हैं & nbsp; प्रतिक्रिया के साथ डोम पर पहुंच गए, आपको dangerouslySetInnerHTMLविधि का उपयोग करने की आवश्यकता है । मुझे वास्तव में ऐसा कोई रास्ता दिखाई नहीं दे रहा है कि जब से आप जावास्क्रिप्ट का उपयोग कर सकते हैं एक स्ट्रिंग बनाने के लिए रिक्त स्थान बनाने के लिए & nbsp; लेकिन dangerouslySetInnerHTMLविधि का उपयोग किए बिना ये प्रतिक्रिया से बच जाएंगे।
माइक चालक

जवाबों:


238

&nbsp;HTML इकाई का उपयोग करने के बजाय , आप यूनिकोड वर्ण का उपयोग कर सकते हैं जो &nbsp;(U + 00A0 NON-BREAKING SHACE) को संदर्भित करता है:

<div>{myValue.replace(/ /g, "\u00a0")}</div>

3
कृपया ध्यान दें कि आपके द्वारा ऊपर उपयोग किए जा रहे यूनिकोड चरित्र को फ़िशिंग योजनाओं द्वारा दुरुपयोग के कारण ब्राउज़र द्वारा ब्लैकलिस्ट किया जा रहा है। Kb.mozillazine.org/Network.IDN.blacklist_chars
पेरी

2
@BenAlpert अच्छी बात है। हाँ। बहुत अच्छी बात है। बस IDN मेरे ज्ञान को संबोधित करता है।
पेरी टीव

सरल अभी तक प्रभावी। 3xs पोस्ट के बाद भी thx @BenAplert।
यश ने

यह मेरे लिए तब काम आया जब और कुछ नहीं किया। सहायता के लिए धन्यवाद!
दाविदवाद

2
वह ब्लैकलिस्ट डोमेन नाम पर लागू होता है, HTML कोड पर नहीं।
जेडब्ल्यू।

35

मुझे पता है कि यह एक पुराना सवाल है, और यह वही नहीं है जो आपने पूछा था, बल्कि स्ट्रिंग को संपादित करने के बजाय, आप जो हासिल करना चाहते हैं वह शायद सीएसएस white-space: nowrapविशेषता का उपयोग करके बेहतर तरीके से हल किया जा सकता है :

Html में:

<div style="white-space: nowrap">This won't break lines</div>

प्रतिक्रिया में:

<div style={{ whiteSpace: 'nowrap' }}>{myValue}</div>

धन्यवाद! यह बेहतर उत्तर है। और मेरे मामले में (लिंक का एक गुच्छा जिसे मैं लपेटना नहीं चाहता, लेकिन मैं एक पंक्ति पर भी नहीं चाहता), मैंने एक जोड़ा {{सामग्री: ''; सफेद-स्थान: सामान्य}
चाड स्टील

0

यदि आप एक सुंदर xml प्रदर्शित करना चाहते हैं:

var str = "<test>\n\t\t<value>1</value>\n</test>\n".replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\t/g, "\u00a0").replace(/\n/g, '<br/>');
return (
    <div dangerouslySetInnerHTML={{__html: str}} ></div>
)

0

वैसे इसे गायब किए बिना यहां टाइप करना बहुत मुश्किल है, इसलिए मैं थोड़ा व्हाट्सएप जोड़ रहा हूं ताकि हर कोई इसे देख सके। यदि आप इस टैग <nbsp /> से व्हाट्सएप को हटा देते हैं, तो आप प्रतिक्रिया में गैर-ब्रेकिंग स्पेस का उपयोग कर पाएंगे।

रिएक्ट इस JSX टैग को नॉन-ब्रेकिंग स्पेस में तब्दील करता है। अजीब क्विर्क: इसका उपयोग उसी लाइन पर भी किया जाना चाहिए जिस पाठ को आप स्पेस देना चाहते हैं। इसके अलावा, इस टैग के साथ गैर-ब्रेकिंग स्पेस रिएक्ट में स्टैक नहीं करते हैं।


काम नहीं करता है:Warning: The tag <nbsp> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter
रॉस एट्री

0

स्ट्रिंग के बीच के स्थान को हटाने के लिए, नीचे कोड मेरे लिए काम करता है। उदाहरण: "afee dd" परिणाम: "afeedd"

{myValue.replace (/ \ s + / g, '')}

-4

तो आपके पास इस "नमस्ते दुनिया" जैसा एक मूल्य है, और हम कहेंगे कि यह अंदर है this.props.value

तुम यह केर सकते हो:

var parts = this.props.value.split(" "), array = [];
for (var i=0; i<parts.length; i++){
  // add the string
  array.push(<span key={i * 2}>{parts[i]}</span>);
  // add the nbsp
  array.push(<span key={i * 2 + 1}>&nbsp;</span>);
}

// remove the trailing nbsp
array.pop();

return <div>{array}</div>;

jsbin

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.