Chuyển đổi phần tử React sang HTML

Tiện ích này được thiết kế để giải phóng các nhà phát triển React khỏi công việc dịch HTML sang các thành phần React nhàm chán

Hãy tưởng tượng bạn vừa nhận được một đống HTML từ các nhà thiết kế của mình. Điều đầu tiên bạn sẽ làm là chia HTML thành các thành phần React. Điều này thật nhàm chán và chúng ta có thể tự động hóa việc này

Các thành phần HTML nên được chú thích bằng thuộc tính

ReactDOMServer.renderToPipeableStream(element, options)
5. Giá trị của thuộc tính là tên của thành phần React. Cấu trúc của HTML được giữ nguyên bằng cách nhập các thành phần con và thay thế các phần HTML thích hợp bằng chúng. Kết quả là bạn có toàn bộ cây thành phần sẵn sàng để hiển thị

Đối tượng

ReactDOMServer.renderToPipeableStream(element, options)
6 cho phép bạn hiển thị các thành phần thành đánh dấu tĩnh. Thông thường, nó được sử dụng trên máy chủ Node

// ES modules
import * as ReactDOMServer from 'react-dom/server';
// CommonJS
var ReactDOMServer = require('react-dom/server');

Tổng quan

Các phương thức này chỉ khả dụng trong môi trường có Node. luồng js

  • (Không dùng nữa)

Các phương thức này chỉ khả dụng trong môi trường có Luồng web (điều này bao gồm các trình duyệt, Deno và một số thời gian chạy cạnh hiện đại)

Các phương pháp sau có thể được sử dụng trong môi trường không hỗ trợ luồng

Thẩm quyền giải quyết

ReactDOMServer.renderToPipeableStream(element, options)0

ReactDOMServer.renderToPipeableStream(element, options)

Kết xuất phần tử React thành HTML ban đầu của nó. Trả về một luồng có phương thức

ReactDOMServer.renderToPipeableStream(element, options)
7 để chuyển đầu ra và
ReactDOMServer.renderToPipeableStream(element, options)
8 để hủy bỏ yêu cầu. Hỗ trợ đầy đủ Hồi hộp và phát trực tuyến HTML với các khối nội dung “bị trì hoãn” “xuất hiện” thông qua các thẻ
ReactDOMServer.renderToPipeableStream(element, options)
9 nội tuyến sau đó. Đọc thêm

Nếu bạn gọi một nút đã có đánh dấu kết xuất máy chủ này, React sẽ giữ nguyên nó và chỉ đính kèm các trình xử lý sự kiện, cho phép bạn có trải nghiệm tải lần đầu rất hiệu quả

let didError = false;
const stream = renderToPipeableStream(
  <App />,
  {
    onShellReady() {
      // The content above all Suspense boundaries is ready.
      // If something errored before we started streaming, we set the error code appropriately.
      res.statusCode = didError ? 500 : 200;
      res.setHeader('Content-type', 'text/html');
      stream.pipe(res);
    },
    onShellError(error) {
      // Something errored before we could complete the shell so we emit an alternative shell.
      res.statusCode = 500;
      res.send(
        '

Loading...

'
); }, onAllReady() { // If you don't want streaming, use this instead of onShellReady. // This will fire after the entire page content is ready. // You can use this for crawlers or static generation. // res.statusCode = didError ? 500 : 200; // res.setHeader('Content-type', 'text/html'); // stream.pipe(res); }, onError(err) { didError = true; console.error(err); }, } );

xem

Ghi chú

Đây là một nút. API dành riêng cho js. Các môi trường có Luồng web, như Deno và thời gian chạy cạnh hiện đại, nên sử dụng thay thế


ReactDOMServer.renderToPipeableStream(element, options)3

________số 8

Truyền một phần tử React sang HTML ban đầu của nó. Trả về một Lời hứa phân giải thành Luồng có thể đọc được. Hỗ trợ đầy đủ Hồi hộp và phát trực tuyến HTML. Đọc thêm

Nếu bạn gọi một nút đã có đánh dấu kết xuất máy chủ này, React sẽ giữ nguyên nó và chỉ đính kèm các trình xử lý sự kiện, cho phép bạn có trải nghiệm tải lần đầu rất hiệu quả

let controller = new AbortController();
let didError = false;
try {
  let stream = await renderToReadableStream(
    <html>
      <body>Successbody>
    html>,
    {
      signal: controller.signal,
      onError(error) {
        didError = true;
        console.error(error);
      }
    }
  );
  
  // This is to wait for all Suspense boundaries to be ready. You can uncomment
  // this line if you want to buffer the entire HTML instead of streaming it.
  // You can use this for crawlers or static generation:

  // await stream.allReady;

  return new Response(stream, {
    status: didError ? 500 : 200,
    headers: {'Content-Type': 'text/html'},
  });
} catch (error) {
  return new Response(
    '

Loading...

'
, { status: 500, headers: {'Content-Type': 'text/html'}, } ); }

xem

Ghi chú

API này phụ thuộc vào Luồng web. Đối với nút. js, hãy sử dụng thay thế


ReactDOMServer.renderToPipeableStream(element, options)1 (Không dùng nữa)

ReactDOMServer.renderToPipeableStream(element, options)
1

Kết xuất phần tử React thành HTML ban đầu của nó. Trả về một kết quả xuất ra một chuỗi HTML. Đầu ra HTML của luồng này chính xác bằng những gì sẽ trả về. Bạn có thể sử dụng phương pháp này để tạo HTML trên máy chủ và gửi đánh dấu xuống theo yêu cầu ban đầu để tải trang nhanh hơn và cho phép các công cụ tìm kiếm thu thập dữ liệu các trang của bạn cho mục đích SEO

Nếu bạn gọi một nút đã có đánh dấu kết xuất máy chủ này, React sẽ giữ nguyên nó và chỉ đính kèm các trình xử lý sự kiện, cho phép bạn có trải nghiệm tải lần đầu rất hiệu quả

Ghi chú

Chỉ dành cho máy chủ. API này không khả dụng trong trình duyệt

Luồng được trả về từ phương thức này sẽ trả về luồng byte được mã hóa bằng utf-8. Nếu bạn cần một luồng ở dạng mã hóa khác, hãy xem một dự án như iconv-lite, cung cấp các luồng biến đổi để chuyển mã văn bản


ReactDOMServer.renderToPipeableStream(element, options)2

ReactDOMServer.renderToPipeableStream(element, options)
3

Tương tự như , ngoại trừ điều này không tạo thêm các thuộc tính DOM mà React sử dụng nội bộ, chẳng hạn như

ReactDOMServer.renderToReadableStream(element, options);
0. Điều này hữu ích nếu bạn muốn sử dụng React như một trình tạo trang tĩnh đơn giản, vì việc loại bỏ các thuộc tính bổ sung có thể tiết kiệm một số byte

Đầu ra HTML của luồng này chính xác bằng những gì sẽ trả về

Nếu bạn định sử dụng React trên máy khách để đánh dấu tương tác, không sử dụng phương pháp này. Thay vào đó, sử dụng trên máy chủ và trên máy khách

Làm cách nào để chuyển đổi mã React sang HTML?

Ứng dụng React được hiển thị trên máy chủ, được chuyển đổi thành HTML bằng cách sử dụng ReactDOM. renderToString() , sau đó gửi tới máy khách. Thông thường, có một "bù nước" trên máy khách nơi Ứng dụng sau đó kết xuất lại bằng javascript, nhưng điều đó không bắt buộc.

Làm cách nào để hiển thị thành phần React thành HTML?

Mục tiêu của React theo nhiều cách là hiển thị HTML trong một trang web. React kết xuất HTML cho trang web bằng cách sử dụng chức năng có tên là ReactDOM. kết xuất() .

Bạn có thể sử dụng các thành phần React trong HTML không?

Bước 1. Thêm Vùng chứa DOM vào HTML . Bạn có thể đặt một "vùng chứa"

Làm cách nào để biên dịch JSX sang HTML?

Trình chuyển đổi JSX sang HTML .
// mọi thành phần được sử dụng trong đầu vào jsx cần được xác định trước
const Foo = () => ;.
// không bọc đầu vào jsx trong một thành phần
.