Tại sao ko nghĩ là viết code bt mà useEffect vẫn work chế ra chi useDeepEffect. Vì so sánh deep chậm nên cụ React ban đầu chỉ xài shallow compare là có lý do.
Ví dụ có nhiều cách optimize
JavaScript:
const { name, age } = {
name: "Linh",
age: 18,
};
useEffect(() => {
console.log(name, age);
}, [name, age]);
Ví dụ object nó ko có memo vì shallow compare xài === thì destruct ra name or age mà so sánh
or so sanh object.name, object.age
Vâng vâng và vâng vâng nhiều khi chưa cần đụng useMemo.
Chưa kể viết component thì nên hạn chế xài object props.
ví dụ <User data={object} /> Nếu nó chỉ xài name với age thì <User name={obj.name} age={obj.age} /> Shallow compare age number với name string là quá đơn giản ko phải memo nữa. Nếu xài thêm React.Pure với componetn User nữa thì đãm bảo nó ko re render luôn. Đồng thời component User là độc lập, ko cần phải lo ngoay ngoái props data đã được memo chưa.
Có nhiều cách optimize deps, nhưng trước mắt phải học theo linter, doc thì mới ngộ ra nhưng cái như thế này. Tôi viết trên đây ban đầu chỉ dành cho jr thôi. Ai bỉ bôi tôi xài auto fill thì nên nhớ mấy anh pro sẵn rồi và k phải là đối tượng tôi hướng tới.
Trình tôi giờ tôi vẫn auto fill deps nhưng tôi nhìn vào là cái là biết cái thằng deps nào sẽ gây trouble để có kế sách đối phó. Chứ ếu phải fill vào để đó + ko test.
Mà chưa kể mấy anh thích tự điền thì tùy tôi lười gõ auto fill rồi sửa thêm xóa tý là xong đỡ type nhiều đỡ mỏi tay. Có khi mấy anh skip hết deps chứ bt ko lẽ ko gõ bất kì deps nào?