Trên thực tế, có nhiều cách để làm điều đó.
Bạn muốn sử dụng JSX bên trong đạo cụ của mình
Bạn có thể chỉ cần sử dụng {} để khiến JSX phân tích cú pháp tham số. Hạn chế duy nhất giống với mọi phần tử JSX: Nó chỉ được trả về một phần tử gốc.
myProp={<div><SomeComponent>Some String</div>}
Cách dễ đọc nhất để thực hiện điều này là tạo một hàm renderMyProp sẽ trả về các thành phần JSX (giống như hàm kết xuất tiêu chuẩn) và sau đó chỉ cần gọi myProp = {this.renderMyProp ()}
Bạn chỉ muốn chuyển HTML dưới dạng một chuỗi
Theo mặc định, JSX không cho phép bạn hiển thị HTML thô từ các giá trị chuỗi. Tuy nhiên, có một cách để thực hiện điều đó:
myProp="<div>This is some html</div>"
Sau đó, trong thành phần của bạn, bạn có thể sử dụng nó như vậy:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Lưu ý rằng giải pháp này 'có thể' mở trên các cuộc tấn công giả mạo tập lệnh trên nhiều trang web. Cũng nên lưu ý rằng bạn chỉ có thể hiển thị HTML đơn giản, không có thẻ hoặc thành phần JSX hoặc những thứ lạ mắt khác.
Cách mảng
Trong phản ứng, bạn có thể chuyển một mảng các phần tử JSX. Điều đó có nghĩa là:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Tôi sẽ không đề xuất phương pháp này vì:
- Nó sẽ tạo ra một cảnh báo (thiếu khóa)
- Nó không thể đọc được
- Đó không thực sự là cách JSX, nó giống như một sự tấn công hơn là một thiết kế dự kiến.
Con đường
Thêm nó vì mục đích hoàn chỉnh nhưng trong phản ứng, bạn cũng có thể nhận được tất cả các phần tử con nằm 'bên trong' thành phần của bạn.
Vì vậy, nếu tôi lấy mã sau:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Sau đó, hai div sẽ có sẵn dưới dạng this.props.children trong SomeComponent và có thể được hiển thị với cú pháp {} chuẩn.
Giải pháp này hoàn hảo khi bạn chỉ có một nội dung HTML để chuyển cho Thành phần của mình (Hãy tưởng tượng một thành phần Popin chỉ nhận nội dung của Popin khi còn nhỏ).
Tuy nhiên, nếu bạn có nhiều nội dung, bạn không thể sử dụng con (hoặc ít nhất bạn cần kết hợp nó với một giải pháp khác ở đây)