Hỏi về cách hoạt động của hook trong React

E đang học dùng React, e thấy mỗi khi dùng “Hook” như useState hoặc Effect React biết Component nào nên chạy lại hoặc chạy lúc mount hoặc unmount, sao nó làm được vậy mn?

Mấy bợm ngày nay trông rất buồn cười khi học về lập trình lại không biết gì về máy tính. Abstraction nhiều lớp quá mà không hiểu bản chất để rồi viết ra những cái tệ hại: nhìn bóng bẩy, đa năng,… nhưng phần mềm, chương trình chạy đã tạo thêm vấn đề hơn là giải quyết vấn đề nào có ý nghĩa.

Đừng quan tâm đến mấy ngôn ngữ lập trình bậc cao nữa, đọc chương https://en.wikipedia.org/wiki/Interrupt trong sách về kiến trúc PC.

1 Like

thích hiểu sâu thì cứ đặt debugger; rồi debug thôi.

debugger; // sẽ break ở đây khi thực thi
const [a, setA] = useState('...')

còn nếu giải thích thì nó phức tạp lắm.
nhưng với useState, thì khi setState, react sẽ push 1 mesage vô 1 cái queue gọi là update queue để thông báo cho system biết là có state mới update. từ đó sẽ re-render lại.
còn quá trình nó nhận cái message, xử lý, update, re-render thì chắc phải viết nửa cuốn sách.

còn để hiểu useEffect thì làm như sau.

useEffect(() => {
 debugger;
 // code
 return () => {
  debugger;
 }
}, [])

với useEffect thì siêu phức tạp. khuyến khích trừ khi thích dev react thì tìm hiểu. còn không thì bỏ qua. tại vì nó liên quan tới react fiber, effect tag và tỉ tỉ thứ khác.
nhưng cơ bản thì như useState. react sẽ push 1 cái message. nhưng message vô updateQueue.effectList
dạng vầy

useEffect(() => {
  console.log("hello");
  return () => console.log("bye");
}, [...]);
->
{
  create: () => { console.log("hello") },
  destroy: () => { console.log("bye") },
  deps: [...],
}

react khi render xong sẽ nhìn vô và móc ra thằng msg này và so sánh rồi thực thi.

As @superthin pointed out, you should start from scratch with the operating system. Without basic OS-knowledge, you’ll never master anything and will constantly be confused. You could end up “burned out,” or in Vietnamese, “Tẩu hỏa nhập ma.”

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?