How can the useEffect hook be optimized for cleanup actions?
4 phương ánCó giải thích
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "By manually removing event listeners". Theo tài liệu React, Effect dọn dẹp bằng cách trả về một hàm cleanup; React gọi hàm này trước mỗi lần Effect chạy lại và khi component unmount, và việc cần làm bên trong là gỡ đúng thứ Effect đã gắn, ví dụ gọi removeEventListener cho listener đã thêm bằng addEventListener, hủy timer hay ngắt kết nối. Cách chuẩn nhất là trả về một hàm cleanup trong đó gỡ listener, nhưng câu không có phương án ấy, nên gỡ listener thủ công là phương án gần nhất với việc dọn dẹp thật sự. Phương án "By passing an empty array as the second argument" hay bị chọn nhầm: mảng phụ thuộc rỗng chỉ quyết định Effect chạy một lần lúc mount và cleanup chạy lúc unmount, tức quyết định thời điểm, còn bản thân nó không dọn dẹp gì; thiếu hàm cleanup thì listener vẫn rò rỉ. Phương án "By using a class-based component" đi ngược hướng hook, vì class dọn dẹp trong componentWillUnmount chứ không dùng useEffect. Phương án "By calling it after every render" là hành vi mặc định khi bỏ mảng phụ thuộc, làm Effect và cleanup chạy dày hơn chứ không tối ưu gì.
Cùng phần 6
Find the bug in the following React code: const [items, setItems] = useState([]); const addItem = () => { items.push('new'); setItems(items); };Có lời giảiCâu hỏiWhich is the correct way to consume context in a functional component using the "useContext" hook?Có lời giảiCâu hỏiIn the useEffect hook, how many milliseconds would you wait using setTimeout to perform a side effect after 2 seconds?Có lời giảiCâu hỏiCả 24 câu của chủ đề24 câu