React cho biết việc hiển thị thuần túy có thể tối ưu hóa hiệu suất. Và bây giờ React có PureComponent. Tôi có nên sử dụng React.PureComponent ở mọi nơi không? Hoặc khi nào sử dụng React.PureComponent và vị trí thích hợp nhất để sử dụng React.PureComponent là gì?Tôi có nên sử dụng React.PureComponent ở mọi nơi không?
Trả lời
Bạn nên sử dụng nó bất cứ khi nào có thể. Nó sẽ tiết kiệm đáng kể cho bạn thời gian hiển thị nếu bạn có nhiều trường hợp các thành phần cấp gốc cập nhật trong khi trẻ em không cần phải làm như vậy. Điều đó đang được nói, bạn sẽ thu được nhiều lợi ích hơn từ việc sử dụng PureComponent trong các nút cấp gốc của bạn (nghĩa là PureComponent sẽ không cải thiện hiệu suất tổng thể nhiều trong các thành phần mức độ lá bởi vì nó chỉ tiết kiệm các kết xuất từ thành phần đó).
Một số lưu ý đối với PureComponent được giải thích rất rõ trong tài liệu phản ứng.
React.PureComponent's shouldComponentUpdate() chỉ nông so sánh các đối tượng.
Bạn có thể vô tình bỏ lỡ cập nhật hiển thị nếu thay đổi của bản thân bạn nằm sâu trong đối tượng lồng nhau. PureComponent chỉ tuyệt vời với các đối tượng/đạo cụ phẳng đơn giản hoặc bằng cách sử dụng một cái gì đó như ImmutableJS để phát hiện các thay đổi trong bất kỳ đối tượng nào với một so sánh đơn giản.
Hơn nữa, React.PureComponent's shouldComponentUpdate() bỏ qua các bản cập nhật cho toàn bộ thành phần. Hãy chắc chắn rằng tất cả các thành phần trẻ em cũng "tinh khiết".
PureComponent chỉ hoạt động khi kết xuất thành phần của bạn chỉ phụ thuộc vào đạo cụ và trạng thái. Điều này luôn luôn là trường hợp trong phản ứng nhưng có một số ví dụ mà bạn cần phải tái render bên ngoài vòng đời phản ứng bình thường. Để PureComponent hoạt động như mong đợi (bỏ qua kết xuất lại bạn không thực sự cần phải xảy ra), mọi hậu duệ của PureComponent của bạn phải là 'thuần túy' (chỉ phụ thuộc vào đạo cụ và trạng thái).
Hiểu. Cảm ơn bạn! –
Tôi rất vui vì tôi có thể giúp! Nếu điều này trả lời câu hỏi của bạn hoàn toàn, bạn có thể đánh dấu câu hỏi đó là câu trả lời được chấp nhận để thông báo cho người dùng trong tương lai và tăng cả danh tiếng của chúng tôi! –
Bạn có thể cung cấp một ví dụ về khi nào một thành phần không phải là một chức năng thuần túy của đạo cụ và tiểu bang? –
- 1. java.util.Observable có được sử dụng ở mọi nơi không?
- 2. Qt :: WA_TranslucentBackground có sẵn ở mọi nơi?
- 3. Django/Python: Nhập một lần, sử dụng ở mọi nơi
- 4. NSInteger có thực sự được sử dụng ở mọi nơi không?
- 5. Khi sử dụng shared_ptr nên tôi chỉ sử dụng khai báo shared_ptr một lần hoặc khai báo shared_ptr ở mọi nơi tôi vượt qua nó?
- 6. .NET WF4: Có nên ở giữa mọi thứ không?
- 7. Ẩn con trỏ ở mọi nơi
- 8. Khi nào trong API REST của tôi, tôi có nên sử dụng phong bì không? Nếu tôi sử dụng nó ở một nơi, tôi có nên sử dụng nó không?
- 9. Tại sao "android:" ở khắp mọi nơi?
- 10. Tôi có nên sử dụng tsd hoặc đánh máy không?
- 11. Tôi có nên sử dụng ProGuard không?
- 12. Tôi có nên sử dụng ValidateAntiForgeryToken trong mọi yêu cầu POST không?
- 13. Tôi có nên sử dụng jQuery.each() không?
- 14. Tôi có nên sử dụng HttpRuntime.Cache không?
- 15. Có thể tự động chèn phụ thuộc "ở khắp mọi nơi" không?
- 16. Asp.net MVC SecurityStamp sắc signout ở khắp mọi nơi
- 17. React.Component vs React.PureComponent
- 18. Có ai ở đây tích hợp Team Explorer mọi nơi với Xcode không?
- 19. Khi nào tôi nên sử dụng đồng thời ở golang?
- 20. Hỗ trợ Android OpenGL ES ở mọi nơi?
- 21. Tôi có nên sử dụng một khung công tác không?
- 22. C# - Ai đó có thể cho tôi biết lý do và nơi tôi nên sử dụng đại biểu không?
- 23. Tôi có nên sử dụng ScriptSharp
- 24. Git - Bỏ qua node_modules thư mục ở khắp mọi nơi
- 25. Có cách nào để tránh $ this-> ở khắp mọi nơi không?
- 26. Tại sao tôi nên sử dụng BBCode nhưng không sử dụng HTML ở dạng bình luận?
- 27. Khi nào và ở đâu tôi nên sử dụng WCF
- 28. Tôi có nên sử dụng FxCop và tại sao không?
- 29. MutationRecord.oldValue có phải là thứ tôi nên sử dụng không?
- 30. Char.Equals vs Object.Equals - ReSharper gợi ý rằng tôi nên sử dụng Object.Equals. Tôi có nên không?
Có và không. Đó là điều tương tự như sử dụng pureRenderMixin ở khắp mọi nơi. – Chef