Tạo các trang tĩnh là việc sử dụng React được dự đoán trước, như được đề cập trong tài liệu cho React.renderToStaticMarkup
Tương tự như vậy renderToString
, ngoại trừ việc này không tạo thêm các thuộc tính DOM như data-react-id
, React sử dụng nội bộ. Điều này rất 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ì tước đi các thuộc tính bổ sung có thể tiết kiệm rất nhiều byte.
Một số đã được gọi là sử dụng phản ứng ở đây quá mức cần thiết. Tuy nhiên, khi tôi muốn một cái gì đó chết, tôi không có vấn đề gì với việc làm quá mức nó. Thực tế là phản ứng có thể làm nhiều hơn là không cần thiết cho trường hợp sử dụng này là không có lý lẽ chống lại phản ứng.
Tuy nhiên, vấn đề có thể phát sinh nếu bạn muốn thực hiện mã không đồng bộ. Hãy tưởng tượng như sau:
function SchoolClass({classId}) {
const students = await query("SELECT name FROM student WHERE class = ?", classId);
return <ul>
{_.map(students, ({name}) => <li>{name}</li>}
</ul>
}
Nhưng điều này sẽ không hoạt động, bởi vì hàm trả về một Promise, không phải là phần tử React và do đó không tương thích với React. Nếu bạn đang nghĩ ra một khung công cụ tạo trang tĩnh theo kiểu React, có lẽ bạn sẽ cho phép điều này. Tuy nhiên, vì React tập trung vào các ứng dụng khách webapp, nên điều đó không được phép.