& nbsp jsx ไม่ทำงาน


101

ฉันใช้แท็ก & nbsp ใน jsx และไม่แสดงช่องว่าง ต่อไปนี้เป็นข้อมูลโค้ดของฉันเล็กน้อยโปรดช่วยด้วย

var Reporting=React.createClass({

  render: function(){
    return(
      <div style={divPositionReporting}>
          <p>Pricing Reports</p>
          <hr></hr>
          Select Scenario:&nbsp;&nbsp;
          <select>
            <option></option>
          </select>
          <button type="button">Get Pricing Report</button>
          <br/>
          Select Takeout Scenario:&nbsp;
          <select>
            <option></option>
          </select>
          <button type="button">Get Pricing Report</button>
          <br/>
      </div>
    );
  },

});

คุณได้ค้นหา? ครั้งแรก: google.com/search?q=react+html+entities
Felix Kling

ฉันไม่คิดว่ามีอะไรผิดปกติกับรหัสของคุณ Babel และ React เวอร์ชันใดที่ใช้อยู่ อย่าลืมใช้เวอร์ชันล่าสุด คุณจะเห็นในBabel replว่าโค้ดที่สร้างขึ้นมีอักขระช่องว่างที่ไม่ทำลาย
Felix Kling

ตอนนี้การตีแรกคือสิ่งนี้ :) duckduckgo.com/?q=jsx+nbsp
Marc Stober

คำตอบ:


213

ดู: JSX ในความลึก

ลอง: Select Scenario:{'\u00A0'}

หรือ: <div dangerouslySetInnerHTML={{__html: 'Select Scenario: &nbsp;'}} />

หรือ: <div>&nbsp;</div>

jsfiddle

อัปเดต

หลังจากเห็นบางความคิดเห็นและทดลองใช้ ฉันพบว่าการใช้ html entites ภายใน JSX นั้นทำงานได้ดี (ไม่เหมือนกับที่ระบุไว้ในข้อมูลอ้างอิง jsx-gotchas ข้างต้น [อาจจะล้าสมัย])

ดังนั้นการใช้สิ่งที่ต้องการ: R&amp;Dจะแสดงผลลัพธ์: 'R&D' มีพฤติกรรมแปลก ๆ ด้วย&nbsp;ซึ่งทำให้มันแสดงผลต่างกันจึงทำให้ฉันคิดว่ามันใช้ไม่ได้:

<div>This works simply:-&nbsp;-</div>
<div>This works simply:- {'\u00A0'}-</div>

ผลิต:

This works simply:- -
This works simply:-  -

8
ดังนั้นคำตอบคือใช้ค่า Unicode ที่ตรงกับเอนทิตี html และใช้ภายในสตริงจาวาสคริปต์ ขอบคุณสำหรับความช่วยเหลือของคุณ.
Indraneel Bende

@IndraneelBende น่า&nbsp;จะใช้ได้ดี มีปัญหากับค่าในแอตทริบิวต์ style
Gaurav Kumar

@Gaurav Kumar ฉันลองแล้วก็ไม่ได้ผลมันถูกละเว้น คุณช่วยเพิ่มซอในคำตอบของฉันได้ไหม
omerts

1
<div>Doesn't work: -&nbsp;-</div>ใช้งานได้ดีสำหรับฉัน แก้ไข:ดูเหมือนจะไม่ใช่พื้นที่ที่ไม่ทำลาย
Felix Kling

อืมสร้างผลลัพธ์ที่คาดหวังบนเว็บไซต์ React เองแม้ว่า ...
Felix Kling


17

เขียนjsxรหัสของคุณห่อไว้{ }ตามที่แสดงด้านล่าง

<h1>Code {' '}</h1>

คุณสามารถใส่ช่องว่างหรืออักขระพิเศษได้ที่นี่

เช่นในกรณีของคุณ

Select Takeout Scenario:&nbsp;

ควรจะเป็นแบบนี้

Select Takeout Scenario:{' '}

มันจะทำงาน.

เนื่องจากคำแนะนำคุณไม่ควรใช้&nbspเพื่อเพิ่มพื้นที่พิเศษคุณสามารถใช้cssเพื่อให้ได้สิ่งเดียวกัน


2
นี่เป็นเพียงการเพิ่มช่องว่าง แต่จะใช้ไม่ได้กับเอนทิตี html อื่น
omerts

5
นั่นไม่ใช่พื้นที่ที่ไม่ทำลาย
TimoSolo

1
@TimoSolo ฉันไม่แนะนำให้คุณใช้ & nbsp หรือเทคนิคที่กล่าวมาข้างต้น คุณสามารถลองคำตอบแรกหากของฉันไม่ทำงาน ขอบคุณ.
WitVault

"ใช้ css เพื่อให้ได้ผลเดียวกัน" - คุณอาจใช้พื้นที่ไม่ทำลายข้อความของคุณจึงไม่เลื่อนลงไปที่บรรทัดถัดไปและอยู่นอกขอบเขตขององค์ประกอบที่มีข้อความ หากคุณต้องการที่จะใช้คุณสมบัติ CSS text-overflow: "clip"; overflow: "hidden";เพื่อทำเช่นนี้แทนแล้ววิธีหนึ่งที่จะทำเช่นนี้คือ มีให้เลือกหลายแบบ
Dan Cron

4

หากยังไม่ได้ผลสำหรับคุณแล้วการใช้งาน{' '}{'\u00A0'}

{' '}จะแสดงช่องว่าง แต่มีบางกรณีที่คุณต้องการให้ความสูงของเส้นแสดงผลในกรณีที่คุณต้องการช่องว่างภายในองค์ประกอบ HTML ที่ไม่มีข้อความอื่นเช่น<span style={{ lineHeight: '1em' }}>{' '}</span>ในกรณีนี้คุณจะต้องใช้{'\u00A0'}ภายใน สแปนหรือองค์ประกอบ HTML


1

พยายามใช้ utf-8 nbsp ดูเหมือนเป็นพื้นที่เรียบง่าย แต่ทำงานได้ดีโดยไม่ต้องใช้รหัสเพิ่มเติม

บางทีคุณควรสร้างตัวแปรสำหรับสิ่งนี้

สำหรับสัญลักษณ์การคัดลอก: https://unicode-table.com/en/00A0/

สำหรับการสร้างข้อความโดยอัตโนมัติให้ใช้ตัวพิมพ์บางตัว


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.