& nbsp jsx không hoạt động


99

Tôi đang sử dụng thẻ & nbsp trong jsx và nó không hiển thị không gian. Sau đây là một đoạn mã nhỏ của tôi. Vui lòng giúp đỡ.

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>
    );
  },

});

Bạn đã tìm kiếm? Lần truy cập đầu tiên: google.com/search?q=react+html+entities
Felix Kling

Tôi không nghĩ rằng có gì sai với mã của bạn. Phiên bản Babel và React nào đang sử dụng? Đảm bảo sử dụng các phiên bản mới nhất. Bạn có thể thấy trong Babel repl rằng mã được tạo chứa các ký tự khoảng trắng không ngắt.
Felix Kling

Bây giờ hit đầu tiên là cái này. :) duckduckgo.com/?q=jsx+nbsp
Marc Stober,

Câu trả lời:


200

Xem: JSX chuyên sâu

Thử: Select Scenario:{'\u00A0'}

Hoặc là: <div dangerouslySetInnerHTML={{__html: 'Select Scenario: &nbsp;'}} />

Hoặc là: <div>&nbsp;</div>

jsfiddle

Cập nhật

Sau khi xem một số nhận xét và dùng thử. Tôi nhận thấy rằng việc sử dụng html entites bên trong JSX hoạt động tốt (không giống như những gì được nêu trong tài liệu tham khảo jsx-gotchas ở trên [có thể nó đã lỗi thời]).

Vì vậy, sử dụng một cái gì đó như R&amp;D:, sẽ xuất ra: 'R&D'. Có một hành vi kỳ lạ với &nbsp;, khiến nó hiển thị khác, do đó khiến tôi nghĩ rằng nó không hoạt động:

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

Sản xuất:

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

8
Vì vậy, câu trả lời là sử dụng giá trị unicode tương ứng với thực thể html và sử dụng nó bên trong một chuỗi javascript. Cảm ơn bạn đã giúp đỡ.
Indraneel Bende

@IndraneelBende &nbsp;sẽ hoạt động tốt. Có một số vấn đề với thuộc tính value in style.
Gaurav Kumar

@Gaurav Kumar, tôi cũng đã thử nhưng không hiệu quả, nó chỉ bị bỏ qua. Bạn có thể vui lòng thêm vào câu trả lời của tôi không?
omerts

1
<div>Doesn't work: -&nbsp;-</div>hoạt động tốt cho tôi. chỉnh sửa: Chà, nó dường như không phải là không gian không phá vỡ.
Felix Kling

Mmh, tạo ra kết quả mong muốn trên trang web Phản ứng riêng của mình mặc dù ...
Felix Kling

17

Viết jsxmã của bạn được bao bọc trong { }như hình dưới đây.

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

Bạn có thể đặt dấu cách hoặc bất kỳ ký tự đặc biệt nào ở đây.

ví dụ trong trường hợp của bạn

Select Takeout Scenario:&nbsp;

nên như thế này

Select Takeout Scenario:{' '}

Nó sẽ hoạt động.

Như lời khuyên bạn không nên sử dụng &nbspđể thêm không gian thừa, bạn có thể sử dụng css để đạt được tương tự.


2
Đây chỉ là để thêm khoảng trắng, nhưng sẽ không làm việc cho các tổ chức html khác
omerts

5
Đó không phải là một không gian không phá vỡ .
TimoSolo

1
@TimoSolo Tôi không khuyến khích bạn sử dụng & nbsp hoặc kỹ thuật đã đề cập ở trên. Bạn có thể thử câu trả lời đầu tiên nếu của tôi không hoạt động. Cảm ơn.
WitVault

"sử dụng css để đạt được tương tự" - Bạn có thể đang sử dụng khoảng trắng không ngắt để văn bản của bạn không bị rơi xuống dòng tiếp theo và nằm ngoài ranh giới của phần tử chứa văn bản. Nếu bạn muốn sử dụng thuộc tính CSS để làm điều này thay thế, thì một cách để làm điều này là text-overflow: "clip"; overflow: "hidden";. Có một vài biến thể có sẵn.
Dan Cron

16

{'\u00A0'}hoạt động nhưng khó đọc, vì vậy tôi đã gói nó trong một thành phần hàm :

thành phần / nbsp.js:

export default () => '\u00A0';

sử dụng:

Hello<Nbsp />world

4

Nếu điều này không hiệu quả với bạn {' '}thì hãy sử dụng {'\u00A0'}.

{' '}sẽ hiển thị một khoảng trắng nhưng có một số trường hợp khi bạn muốn chiều cao dòng cũng được hiển thị trong trường hợp bạn muốn một khoảng trắng bên trong phần tử HTML không có văn bản nào khác, tức là:, <span style={{ lineHeight: '1em' }}>{' '}</span>trong trường hợp đó, bạn sẽ cần sử dụng {'\u00A0'}bên trong span hoặc phần tử HTML.


1

Hãy thử sử dụng utf-8 nbsp, có vẻ như là không gian đơn giản, nhưng hoạt động tốt mà không cần thêm mã.

Có lẽ, bạn nên tạo biến cho việc này.

Đối với các biểu tượng sao chép: https://unicode-table.com/en/00A0/

Để tạo văn bản tự động, hãy sử dụng một số kiểu chữ.


0

Bạn cũng có thể sử dụng các ký tự mẫu ES6, tức là,

`   <li></li>` or `  ${value}`

Câu trả lời này có liên quan gì với các thực thể html?
boatcoder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.