Tôi đã chơi với hệ thống hook mới trong React 16.7-alpha và bị mắc kẹt trong một vòng lặp vô hạn trong useEffect khi trạng thái tôi đang xử lý là một đối tượng hoặc mảng.
Đầu tiên, tôi sử dụng useState và khởi tạo nó bằng một đối tượng trống như thế này:
const [obj, setObj] = useState({});
Sau đó, trong useEffect, tôi sử dụng setObj để đặt lại nó thành một đối tượng trống. Đối số thứ hai, tôi chuyển [obj], hy vọng rằng nó sẽ không cập nhật nếu nội dung của đối tượng không thay đổi. Nhưng nó vẫn tiếp tục cập nhật. Tôi đoán vì bất kể nội dung, đây luôn là những đối tượng khác nhau khiến React nghĩ rằng nó liên tục thay đổi?
useEffect(() => {
setIngredients({});
}, [ingredients]);
Điều này cũng đúng với các mảng, nhưng khi còn là nguyên thủy, nó sẽ không bị mắc kẹt trong một vòng lặp, như mong đợi.
Sử dụng các hook mới này, tôi nên xử lý các đối tượng và mảng như thế nào khi kiểm tra thời tiết nội dung có thay đổi hay không?