Cảm ơn các bạn đã xem video của mình nghen! 😍 Nếu có chia sẻ hay thắc mắc nào, các bạn hãy để lại bình luận bên dưới nhé!
@LQT11024 жыл бұрын
Những bài miễn phí các kênh các rất hời hợt nhưng của a lại rất hay, cảm ơn a
@EasyFrontend4 жыл бұрын
Tuấn Lê hihi cảm ơn em nhiều nhé Tuấn ơi 😍
@LQT11024 жыл бұрын
@@EasyFrontend Nào a so sánh thử cái redux saga vs redux thunk nha a
@KhangNguyen-kq2iw3 жыл бұрын
0:00 Giới thiệu 0:52 Làm sao giữ giá trị trước đó của 1 state? 2:06 Lợi ích của useRef 2:58 Giải thích code 6:35 Ví dụ thực tế khi sử dụng useRef 7:55 Link tham khảo
@EasyFrontend3 жыл бұрын
Yeah cảm ơn em nhiều nhiều nhé Khang ơi Số lượng video đã contribute: 1 🎉
@KhangNguyen-kq2iw3 жыл бұрын
@@EasyFrontend hehe k có gì anh, nay mới có tg để cày tiếp video của a Hậu
@chungbienthanh40764 жыл бұрын
Xin phép a cho em nói thêm! Đây đơn giản chỉ là 1 cách! Nếu bạn học lập trình thì sẽ quen với từ "temp - temporary". 1 cách khác! Bạn có thể khởi tạo 1 giá trị ở localstorage. Khi thay đổi hãy push vào. Giờ ko chỉ bạn lấy đc pre-state mà có thể lấy đc pre của pre của pre state cũng đc! And Cảm ơn anh đã chia sẻ!
@EasyFrontend4 жыл бұрын
Chung Biện Thành Yeah yeah cảm ơn em nhiều Chung ơi, đúng như em nói, cái anh share chỉ là một cách nè hihi, cách em làm cũng đc nghen, chỉ cần lưu ý thêm một điều là khi nào reset cái state trong storage là okie nhé Chung 😉
@babayaga33032 жыл бұрын
Code localstorage mà không xoá người sau debug khóc luôn
@devquen7688 Жыл бұрын
mấy cái này cũng k nên lạm dụng localstorage nhỉ, vì giả sử giống như trong ví dụ đi, mỗi lần button trigger thay đổi count thì lại lên set local storage sau đó get về, thì ít nhìu về măth pef cũng k tốt tẹo nào mn nhỉ
@giahuyha61893 жыл бұрын
Bài này anh giảng rất hay ạ, cơ mà nó bị lạc nhầm danh sách phát rồi
@EasyFrontend3 жыл бұрын
yeah cảm ơn em, a đã add thêm vào playlist hooks hihi
@wangtinsum13072 жыл бұрын
Document cua a doc de hieu ghe
@EasyFrontend2 жыл бұрын
hihi cảm ơn em nhiều ❤️
@ndthinh913 жыл бұрын
Hay! Dễ hiểu hơn doc nhiều đấy anh
@EasyFrontend3 жыл бұрын
yeahhh cảm ơn em nhiều nhiều nhé 😍
@phamquochuy23533 жыл бұрын
Cảm ơn anh vì bài giảng dễ hiểu lắm ạ
@EasyFrontend3 жыл бұрын
yeah cảm ơn em nhé Huy, em cú đêm ghê 🤣
@huydo27074 жыл бұрын
a giảng sâu mà hay ghê
@EasyFrontend4 жыл бұрын
Yeahhh cảm ơn em nhiều nhé Huy ơi 😍
@ngthuongnguyen98042 жыл бұрын
A ơi ra video về router v6 đi anh! Vô cùng ủng hộ anh! Hii
@EasyFrontend2 жыл бұрын
yeah cơ mà cái này anh sẽ làm trong khóa reactjs nè hihi, anh hk có làm trên youtube em nhen
@ngthuongnguyen98042 жыл бұрын
@@EasyFrontend a cũng công giáo à, a ở xứ nào thế anh?
@thanhhung6701 Жыл бұрын
có ae nào ở đây học react nản quá nhảy qua Angular k :((
@EasyFrontend Жыл бұрын
thời gian đầu hơi nản em nha, cơ mà em làm một thời gian sẽ quen với nó nha 😉
@shenkn21404 жыл бұрын
Đà nẵng đổ mưa, buồn nhưng lại có những video anh hiện lên, Cuộc đời hết nhàm chán.
@EasyFrontend4 жыл бұрын
lol nghe y như ngôn tình Shen ơi =))) Anyway, cảm ơn em nhiều nhé hihi 😍
@nghiabasil11 ай бұрын
sao không có file pdf vậy anh hehe
@EasyFrontend11 ай бұрын
hi Nghĩa, em check thử link này có file em cần ko nha drive.google.com/drive/folders/1HtFWcGq5w_j8rZ-mSw_I7s2bG7E5npQg?usp=sharing
@nghiabasil11 ай бұрын
@@EasyFrontend Không có anh ạ. Trong đó có tài liệu của khóa ReactJS, đây là khóa React Hook 😁
@anhdang7614 жыл бұрын
useRef nó sẽ chứa một object có thể mutate đc mà ko trigger re-render, đó là lý do nó vẫn hiển thị giá trị trc đó ở giao diện, chứ nó sẽ ko lưu giá trị trc đó khi ta xử lý trong logic
@EasyFrontend4 жыл бұрын
hi Anh, vẫn được nhé, nếu bạn xử lý logic trước khi update sang giá trị mới thì ref nó vẫn có giá trị mới nè 😉
@anhdang7614 жыл бұрын
@@EasyFrontend vâng, nhưng trong video anh nói là useEffect chạy sau render, đó là cách giải thích gây nhầm lẫn cho người xem đó ạ
@EasyFrontend4 жыл бұрын
@@anhdang761 hihi a có nói rõ ràng mà, a cũng có giải thích vụ sau khi chạy 1 vòng là nó giá trị như nhau, e coi lại hết video nhé 😉
@manhaosy86442 жыл бұрын
mình xem cũng thấy dễ bị nhầm, bản thân cái ví dụ đưa ra cho người có kiến thức rồi thì ko sao chứ cái này cho người mới thì khả năng nhầm rất cao
@jockerthe81892 жыл бұрын
anh ơi sao em ko thấy link slide của bài này thế anh
@EasyFrontend2 жыл бұрын
à sr em, anh cũng quên mất cái slide của bài này ở đâu luôn òi hic
@baolyhong61404 жыл бұрын
2 tuần không thấy a mà cứ như cả tháng vậy á :> lại kiếm thêm được tí kiến thức vô đầu rồi hehe
@baolyhong61404 жыл бұрын
Cơ mà hình như kỹ thuật này anh có nhắc qua lúc làm custom hooks rồi hay sao ý
@EasyFrontend4 жыл бұрын
Bao Ly Hong hehee a nhớ là anh có dùng useRef mà trong trường hợp khác, ví dụ khác á Bảo hehee
@baolyhong61404 жыл бұрын
@@EasyFrontend cái lúc mà đổi màu tự động rồi dùng cho nó khỏi bị trùng màu á anh
@baolyhong61404 жыл бұрын
mà em hay dùng global variable để lưu mấy cái option của select, làm vậy thì có sao không a, em để trong local mỗi lần render nó tạo 1 instance mới nên em k để local
@aodaichannel56773 жыл бұрын
anh cho em hỏi, (phút 3:30) anh nói là dòng 7 do state mặc định count = 0 nên dòng 8 prevCount giá trị cũng sẽ = 0 vì useRef(count), vậy khi lần render thứ 2 (phút 5:03) giá trị count bây giờ là 1 mà dòng 8 nó sử dụng useRef(count) mà không cập nhật lên 1 mà vẫn là 0 vậy a?
@EasyFrontend3 жыл бұрын
hi em ơi, có một điểm em cần lưu ý nữa là effect sẽ chạy sau khi render nhen. Tức render xong mới chạy vào mấy cái effects lận nha 😉
@holicneko16682 жыл бұрын
dùng useRef phải kết hợp vs useEffect à anh?
@EasyFrontend2 жыл бұрын
hi em, việc dùng useRef ko bắt buộc phải dùng useEffect em nhen, tùy trường hợp mà em sử dụng cho hợp lý là okie nhé
@chupachupscuong37084 жыл бұрын
Cảm ơn anh Hậu nhé
@EasyFrontend4 жыл бұрын
wohooo cảm ơn em nhiều nhé Cường 😉
@hoanghero984 жыл бұрын
thay cái prevCount đó bằng 1 biến ko dùng userRef thì có dc ko anh
@EasyFrontend4 жыл бұрын
hi Hoàng, anh nghĩ em có thể dùng biến global, tuy nhiên a hk nghĩ mình nên làm vậy. Em bị vướng vào tình huống nào hở Hoàng? 😉
@hoanghero984 жыл бұрын
@@EasyFrontend ý e là thay vì phải khai báo const prevCount = useRef(count), sao mình ko khai báo let prevCount = count, rồi update lại biến prevCount mỗi khi click
@targunn6904 жыл бұрын
@@hoanghero98 vì nếu bạn khai báo let chứ k dùng useRef thì mỗi lần state thay đổi. Component render lại thì biến bạn khai báo sẽ bị khai báo lại từ đầu. Bạn có thể dùng biến toàn cục cũng được nhưng mình nghĩ nên dùng useRef hơn.
@nhutle39244 жыл бұрын
Quá hay a ơi
@EasyFrontend4 жыл бұрын
Yeahhhh cảm ơn em nhiều nhé Nhựt ơi 😍
@juhandvan4 жыл бұрын
Đoạn [5:00] : "cái count của mình = 1, cái ref của mình vẫn = 0" . Tại sao nó vẫn bằng 0 vậy anh Hậu, e tưởng nó lấy giá trị của count hiện tại chứ ạ. A có thể giải thích chỗ này không. Cám ơn a nhiều ạ
@EasyFrontend4 жыл бұрын
hi Juhand ơi, nếu em để ý thì thật ra sau khi chạy hết 1 chu kỳ thì giá trị của ref và state là như nhau. Tuy nhiên do render chạy trước, xong mới tới effect(), nên lúc render thì cái ref nó vẫn còn giữ giá trị cũ, còn state đã là giá trị mới rồi hehe
@juhandvan4 жыл бұрын
@@EasyFrontend Thế thì theo e nếu đúng thì ta giải thích là sau lần render đầu tiên, sau khi click để tăng biến count => gọi hàm setCount => component re-render tuy nhiên hai câu lệnh khởi tạo ở dòng 7 và 8 nó không được chạy lại nữa, phải vậy không anh
@dereknguyen36984 жыл бұрын
Cảm ơn a Hậu 😬
@EasyFrontend4 жыл бұрын
Hời ơiiiii, e cảm ơn a Derek ạ 😊
@minhvu09063 жыл бұрын
Anh Hậu cho e xin cái slide bài giảng với, e cảm ơn ạ
@EasyFrontend3 жыл бұрын
hi em, file này lâu quá òi, anh tìm lại hk thấy nữa òi =)))
@minhvu09063 жыл бұрын
@@EasyFrontend dạ a, tại slide đẹp mà e ngại viết lại 😅
@EasyFrontend3 жыл бұрын
@@minhvu0906 haha thường mấy videos khác a hay để link slide trong video, mà cái này đợt đó a quên hay sao á =))
@minhvu09063 жыл бұрын
@@EasyFrontend xui quá 😅, dạ e cảm ơn a
@duonginhxuan6684 жыл бұрын
a làm về redux saga đi a ơi
@EasyFrontend4 жыл бұрын
Dương Đinh Xuân haha redux saga chắc làm một series luôn quá hehe, mà okie em, anh add vào queue làm video nhé 🙂
@duonginhxuan6684 жыл бұрын
@@EasyFrontend vâng a . em hóng quá :v
@trungthanhbp4 жыл бұрын
@@EasyFrontend ưu tiên làm cái này đi anh, cái này h thấy nhiều project đang sài lắm
@EasyFrontend4 жыл бұрын
Yeah cảm ơn em, vậy chắc làm một vài videos cơ bản trước hen, để mn hiểu đc bản chất vấn đề, xong advanced lên thì nói sau hen 😉
@trungminh5494 жыл бұрын
Đa tạ đại hiệp quá rõ luôn
@EasyFrontend4 жыл бұрын
Trung Minh ngon lành, cảm ơn Trung nhiều nha hehee 😉
@phucle18434 жыл бұрын
Anh ơi, vấn đề là em đang lm 1 web chat, em đang ko biết cách hiển thị trang web khi ng dùng gởi link 1 trang web lên(kiểu giống giống như mình gởi link lên mesenger cho ai đó thì nó ko chỉ hiện link mà còn hiển thị trang web). Anh cho e xin key Word về vấn đề này ạ, em cảm ơn a trc nhe😅
@EasyFrontend4 жыл бұрын
hi Phúc ơi, a thì cũng chưa làm cái này nên không dám chắc lắm, nhưng a đoán thế này: 1. Khi em gửi một tin nhắn có đính kèm link lên server. 2. Server tự nhận thấy à có link website, nó sẽ crawl content của link đó và lấy ra thông tin meta tags. Rồi tạo một message mới, nằm ngay sau message mình gửi lên. Sau đó báo client, ê có 2 message mới nè. 3. Client lắng nghe message mới thấy có 2 thằng mới thì update list message hiện tại để hiển thị thêm 2 ông thần đó lên 🙂
@phucle18434 жыл бұрын
@@EasyFrontend em cám ơn a 😁
@duetran93733 жыл бұрын
có phải nó giống như cái thanh search trong facebook không anh, khi mình search tìm kiếm 1 thứ gì đó. xong, sau đó thì mình bấm vô ô search đó thì nó hiện lại lịch sử tìm kiếm ( nó hiện cái tên mới nhất mình vừa search). Theo em nghĩ là vậy, không có có đúng không anh ! Em cảm ơn ạ.
@EasyFrontend3 жыл бұрын
à hk u em nha, cái như em nói là là lịch sử tìm kiếm òi nè 😉 còn mình chỉ muốn giữ cái state trước đó, và giá trị đó lưu giữ trong ref, khi nó thay đổi nó ko trigger re-render 🙂
@duetran93733 жыл бұрын
@@EasyFrontend dạ em cảm ơn anh. Cái này trong thực tế mình chỉ hay dùng trong map ( cái anh cho ví dụ) thôi hả anh, anh có thể cho em xin vài product thực tế nữa được không ạ
@nghiaminh77042 жыл бұрын
làm như này thì thêm 1 lần render nữa mà KHÔNG phải do click increase (vd 1 cái props nào đó thay đổi, cha render lại,...) thì nó lộ ra ngay prev đã được cập nhật bằng count đúng k ạ?
@EasyFrontend2 жыл бұрын
yeah hợp lý em nhen 👍
@vitrieu4374 жыл бұрын
vậy nếu trong class thì mình dùng thèn nào tương đương useRef vậy a?
@EasyFrontend4 жыл бұрын
vi dang hi Vi ơi, nếu là class component thì mình có thể đơn giản dùng thuộc tính của class là okie rồi nhé anh 🙂 Và mỗi khi componentDidUpdate, a update thuộc tính đó theo state là được nha a 😉
@duonginhxuan6684 жыл бұрын
React.createRef
@hangocluc38244 жыл бұрын
Chào anh. Không biết hiện tại anh có viết typescript không ạ?
@EasyFrontend4 жыл бұрын
hi Lực ơi, hiện a cũng có làm với ts nhé, mà chưa nhiều kinh nghiệm lắm, em có gặp vấn đề gì hk? 🙂
@hangocluc38244 жыл бұрын
@@EasyFrontend Dạ hiện tại thì e mới bắt đầu dự án mới. E đang setup với ts. Hiện thì chưa có vấn đề gì nhưng e cũng mới học ts nên chưa biết mấy pattern hay best practices. A có thể share một vài kinh nghiệm ko ạ?
@phamhieu95393 жыл бұрын
@@EasyFrontend Hau nguyen oi cho toi hoi cai live server cai dat roi ma noi khong su dung duoc , vao ca setting chinh sua roi khong hieu sao khong su dung duoc
@glorynt79254 жыл бұрын
a Hậu cho e hỏi về chỗ này, ngay chỗ setCount, cái count trước đó a gán nó là useState(0) và a viết 1 cái sự kiện onClick là setCount(x => x+1) vậy cho e hỏi setCount(x=> x+1) mình có thể viết là setCount(count +1) không a, có khác nhau gì không ạ, e cảm ơn.
@EasyFrontend4 жыл бұрын
hi Glory ơi, câu hỏi hay nè em, có một số ý ở đây e hen: Nếu em update state mà nó dựa vào state cũ thì luôn luôn dùng dạng callback em hen, tức dùng dạng x => x + 1; Lý do tại vì việc update là asynchronus nên để tránh những tình huống race condition thì mình nên dùng dạng callback nó sẽ đảm bảo lấy theo đúng giá trị trước đó. Còn em mà dùng dạng (count + 1), lỡ có 2 cái set state thế này: count hiện là 3 có một cái set state count + 1 thêm một cái set state count + 1 nữa và lúc set state này cả 2 thằng đều hiểu count đang là bằng 3 --> KQ cuối nó ra count mới bằng 4, trong khi mình expect là bằng 5 🙂 Đo nó oái ăm chỗ đó em hen hehee
@1151TT02094 жыл бұрын
Like, thanks anh
@EasyFrontend4 жыл бұрын
Yeahhhh cảm ơn em nhiều nhé! 😉
@hoangle82124 жыл бұрын
thank you for sharing
@atnguyentien86304 жыл бұрын
Anh làm về redux saga đi ạ.
@EasyFrontend4 жыл бұрын
hihi bữa giờ mn request ông này nhiều quá, chắc ưu tiên làm trước quá 😉