Saya memiliki beberapa props yang memiliki string yang dapat berisi karakter seperti &. Ini juga berisi spasi. Saya ingin mengganti semua spasi dengan
.
Apakah ada cara mudah untuk melakukan ini? Ingatlah bahwa saya tidak bisa begitu saja merender menggunakan sintaks ini:
<div dangerouslySetInnerHTML={{__html: myValue}} />
karena saya pertama-tama harus mengganti entitas HTML apa pun dengan markup mereka. Saya tidak ingin harus melakukan ini, sepertinya levelnya terlalu rendah.
Apakah ada cara agar saya bisa melakukan ini?
 l;
, apakah Anda ingin tag tampilan HTML harfiah atau ada sesuatu yang lain yang ingin Anda lakukan?myValue
dapat diakses. Anda dapat menunggunya di fungsi siklus proses yang sesuai, menguraikannya, dan menyetelparsed
tanda yang mencegah penguraian ganda.dangerouslySetInnerHTML
metode ini. Saya tidak benar-benar melihat jalan keluarnya karena Anda dapat menggunakan javascript untuk membuat string yang menggantikan spasi dengan & nbsp; tetapi tanpa menggunakandangerouslySetInnerHTML
metode ini, ini akan lolos dengan bereaksi.Jawaban:
Alih-alih menggunakan
entitas HTML, Anda dapat menggunakan karakter Unicode yang
mengacu pada (U + 00A0 NON-BREAKING SPACE):<div>{myValue.replace(/ /g, "\u00a0")}</div>
sumber
Saya tahu ini adalah pertanyaan lama, dan ini tidak persis melakukan apa yang Anda minta, tetapi daripada mengedit string, apa yang ingin Anda capai mungkin diselesaikan lebih baik menggunakan
white-space: nowrap
atribut CSS :Dalam html:
<div style="white-space: nowrap">This won't break lines</div>
Dalam reaksi:
<div style={{ whiteSpace: 'nowrap' }}>{myValue}</div>
sumber
Jika Anda ingin menampilkan xml yang cantik:
var str = "<test>\n\t\t<value>1</value>\n</test>\n".replace(/</g, '<').replace(/>/g, '>').replace(/\t/g, "\u00a0").replace(/\n/g, '<br/>'); return ( <div dangerouslySetInnerHTML={{__html: str}} ></div> )
sumber
Memang sangat sulit untuk mengetik di sini tanpa menghilang, jadi saya menambahkan sedikit spasi sehingga semua orang dapat melihatnya. Jika Anda menghapus spasi dari tag ini <nbsp />, Anda akan dapat menggunakan spasi non-breaking di React.
React menerjemahkan tag JSX ini ke dalam ruang non-breaking. Quirk aneh: Ini juga harus digunakan pada baris yang sama dengan teks yang ingin Anda beri spasi. Selain itu, spasi non-breaking dengan tag ini tidak dapat ditumpuk di React.
sumber
Warning: The tag <nbsp> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter
Untuk menghapus spasi di antara string, kode di bawah ini berfungsi untuk saya. misal: "afee dd" result: "afeedd"
{myValue.replace (/ \ s + / g, '')}sumber
Jadi, Anda memiliki nilai seperti ini "Halo dunia", dan kami akan mengatakannya masuk
this.props.value
.Kamu bisa melakukan ini:
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}> </span>); } // remove the trailing nbsp array.pop(); return <div>{array}</div>;
jsbin
sumber