React useEffect hook chi tiết dành cho người mới | React JS

  Рет қаралды 111,313

F8 Official

F8 Official

Күн бұрын

Пікірлер: 90
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
👉 Trong video có đoạn mình nói ngược, add/remove event listener mới là dựa trên observer pattern (publish/subscribe) các bạn nhé. Mình chia video làm 4 phần siêu chi tiết, các phần sau mỗi video khoảng hơn 10 phút. Mình sẽ nói về: 1. useEffect với dependencies 2. useEffect với DOM event listener 3. useEffect với setInterval, setTimeout
@giahuyha6189
@giahuyha6189 3 жыл бұрын
cho em hỏi là trong làm việc thực tế khi có nhiều Effect chỉ chạy 1 lần thì anh thường gom vào code chung trong 1 useEffect hay tách ra ạ
@ducvo1679
@ducvo1679 3 жыл бұрын
cảm ơn thầy Sơn rất nhiều ạ 🥰
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
@@giahuyha6189 Logic khác nhau (làm các việc khác nhau) thì em tách ra làm nhiều useEffect nhé
@annbui6900
@annbui6900 Жыл бұрын
Em cám ơn thầy Sơn nhiều lắm ạ. Nhờ loạt video giải thích tường tận ba cách dùng của useEffect, em đã đậu vào dream company 🙌🏼😄❤️ Đây là lần thứ ba em phỏng vấn lại, tạch hai lần trước và cuối cùng lần này đậu. Lúc người ta hỏi về useEffect, em trả lời như được mùa ấy, tường tận phân tích 3 cách dùng lẫn ví dụ từ thầy Sơn. Cám ơn thầy Sơn đã rất có tầm có tâm, nhờ có video thầy Sơn không thôi em bơi theo mệt nghĩ. Hehe Chúc thầy Sơn luôn nhiều sức khỏe. Học trò từ phương xa 😄
@ThienNguyen-ec7le
@ThienNguyen-ec7le 3 жыл бұрын
Tốc độ ra video quá tuyệt vời luôn học thôi ae ơi!
@mak8naf0813
@mak8naf0813 3 жыл бұрын
cái cách vào video rồi mở laptop lên sau này có thể thành thương hiệu của anh Sơn luôn ấy (~ ̄▽ ̄)~
@nguyenquocan8949
@nguyenquocan8949 3 жыл бұрын
anh dạy kĩ vô cùng, dễ hiểu nữa
@hiephoangvan943
@hiephoangvan943 3 жыл бұрын
Anh dạy rất kĩ, ngày nào cũng hóng anh ra bài mới để học ^^
@deporesmartino1472
@deporesmartino1472 2 жыл бұрын
Dạy rất kỹ và hay , cảm ơn anh nhiều
@dpd246
@dpd246 3 жыл бұрын
Hay quá anh ơi, em vẫn mông lung phần này mà nay anh nói em thấy dễ hiểu quá ạ ^^
@noras9835
@noras9835 3 жыл бұрын
Cảm ơn anh video hữu ích lắm ạ, phong cách chân thật mà hiện đại 🤗
@tiendung2071
@tiendung2071 Жыл бұрын
e cảm ơn a nhiều ạ, may mà có a mà mấy cái hook e làm quen trong 1 nốt nhạc
@duahaugaming8715
@duahaugaming8715 3 жыл бұрын
cảm ơn anh, video hay quá, hôm qua em vừa gặp lỗi với call api ^^
@HuyNguyen-vl4yl
@HuyNguyen-vl4yl 2 жыл бұрын
Cảm ơn anh video rất dễ hiểu
@benalpha2297
@benalpha2297 3 жыл бұрын
Hóng video a Sơn như hồi xưa hóng quà mẹ đi chơ về :)))))))))
@duyphan2919
@duyphan2919 3 жыл бұрын
anh dạy kĩ quá chắc em khỏi đọc docs :))
@tiendatniit
@tiendatniit Жыл бұрын
Video vô cùng bổ ít cho ae nào muốn leo rank :)
@ThinhNguyen-zb6rv
@ThinhNguyen-zb6rv 3 жыл бұрын
Quá tuyệt vời anh ơi , em cảm ơn anh nhìuuu
@thunguyen-om4mb
@thunguyen-om4mb 3 жыл бұрын
a ơi , a có mở lớp online dạy js k ạ ?
@hungoan7699
@hungoan7699 2 жыл бұрын
A Sơn e có 1 số câu hỏi về kỹ thuật muốn hỏi thì có thể gửi qua đâu được anh?
@amanda2348-g9j
@amanda2348-g9j 2 жыл бұрын
13:05 giải thích tại sao viết code trong useEffect
@hoaimiqng
@hoaimiqng 3 жыл бұрын
Fan cứng 😊
@duongnguyen6647
@duongnguyen6647 3 жыл бұрын
Video này anh đc 9.5đ thôi nhé, ì phéc k phải e phệch nha anh 😀
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
Âm "k" mà đọc lên giọng á em. Em lại cao thủ Eng lích à 🤣🤣. Vẫn cảm ơn góp ý của em nhiều nha vì nhiều từ anh vẫn đọc sai tè le ý mà. Chủ yếu em nên focus vào nội dung nhé
@nhanhautran3882
@nhanhautran3882 2 жыл бұрын
Em cám ơn anh rất nhiều !!!
@dung_gl
@dung_gl 3 жыл бұрын
quá đỉnh luôn anh ơi
@deverycode
@deverycode 3 жыл бұрын
Học xong khóa React JS thử build quả web F8 clone =)))
@pntmusic8670
@pntmusic8670 3 жыл бұрын
Trong useEffect ta return thi ket qua nhu nao anh
@pineapplesub3581
@pineapplesub3581 3 жыл бұрын
Hay quá anh ơi!
@benalpha2297
@benalpha2297 3 жыл бұрын
20:28 Anh cho em hỏi chỗ này khi setPosts bằng một giá trị reference (như array trong clip) thì sẽ bị rơi vào lòng lặp vô tận, nhưng khi setPosts là một giá trị primitive như số hoặc chuỗi thì lại ko bị nhỉ?
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
React nó dùng toán tử === để so sánh, nếu state mới khác state cũ nó sẽ render lại em nhé. Trong ví dụ dùng array như trong clip bị render lại vì mỗi lần setPosts là 1 array mới em nhé (khác địa chủ vùng nhớ).
@benalpha2297
@benalpha2297 3 жыл бұрын
@@F8VNOfficial À à em quên mất, state nó trùng với state trước thì nó đâu render lại làm gì haha 😁 Cảm ơn anh.
@CuongNguyen-oh5xm
@CuongNguyen-oh5xm Жыл бұрын
em thấy anh để lại cái stricMode 17:49 nhưng 23:22 anh vẫn chạy 1 lần là sao ạ. em kh hiểu
@minhduynguyen884
@minhduynguyen884 2 жыл бұрын
Sao em thử console.log trong useEffect( () => { console.log('test') }) thì nó lại in ra test tới 2 lần vậy á. Mong được các cao nhân chỉ giáo
@vunguyenhuy3688
@vunguyenhuy3688 2 жыл бұрын
mình cũng bị xong bạn pp nào chưa'
@atchaukhac7731
@atchaukhac7731 2 жыл бұрын
đoạn 17:10s a Sơn có nói do cái Strictmode nha các bạn.
@lanhanhnguyen4577
@lanhanhnguyen4577 3 жыл бұрын
Chạy bo không bằng a Sơn ra video rùi^^
@QNhuCK
@QNhuCK 2 жыл бұрын
Anh cho em hỏi, em đọc doc React có đoạn này: [ Does useEffect run after every render? Yes! By default, it runs both after the first render and after every update. (We will later talk about how to customize this.) Instead of thinking in terms of “mounting” and “updating”, you might find it easier to think that effects happen “after render”. React guarantees the DOM has been updated by the time it runs the effects. ] Theo em hiểu thì mounted với render là không giống nhau, nhưng đoạn này nói nghe có vẻ giống nhau. Anh giải thích thêm chỗ này giúp em được không ạ?
@NguyenNguyen-fj1qh
@NguyenNguyen-fj1qh Жыл бұрын
Trong React, mỗi component có một hàm render() chứa các thông tin về cách component sẽ được hiển thị trên trình duyệt. Khi component được tạo ra và thêm vào DOM, điều này gọi là "mounting". Quá trình mounting bắt đầu bằng việc tạo một instance của component và gọi hàm componentDidMount(), sau đó component được thêm vào DOM. Nếu trạng thái của component thay đổi, hàm render() sẽ được gọi lại để cập nhật UI và hiển thị các thay đổi mới. Vậy, "mounting" là quá trình tạo ra và thêm component vào DOM, trong khi "render" là việc hiển thị component trên trình duyệt dựa trên thông tin trong hàm render(). Ví dụ, chúng ta có một component tên là UserProfile với một thuộc tính username: import React, { useState, useEffect } from 'react'; function UserProfile({ username }) { const [userData, setUserData] = useState(null); //componentDidMount() useEffect(() => { // Call API to fetch user data fetch(`api.example.com/users/${username}`) .then(response => response.json()) .then(data => { setUserData(data); }); }, [username]); if (!userData) { return Loading...; } //render() return ( {userData.name} {userData.email} ); } Khi component UserProfile được tạo ra và thêm vào DOM, hàm componentDidMount() sẽ được gọi. Trong ví dụ trên, chúng ta sử dụng useEffect để gọi API và lấy dữ liệu của người dùng. Khi dữ liệu được trả về, chúng ta sử dụng setUserData để cập nhật trạng thái và gọi lại hàm render() để hiển thị thông tin của người dùng.
@vangianginh4224
@vangianginh4224 3 жыл бұрын
hay quá a ơi
@congnamle3632
@congnamle3632 3 жыл бұрын
Hay quá anh ơi
@tuantuthan8825
@tuantuthan8825 2 жыл бұрын
cảm ơn anh ạ
@huy4854
@huy4854 3 жыл бұрын
Anh làm API luôn nha anh
@luubaoncter8734
@luubaoncter8734 3 жыл бұрын
Về ví dụ sử dụng useEffect chỉ truyền callback ở phút 8:50 thì em/mình có thắc mắc là: Trong thẻ input mình đâu cần phải đặt lại attribute value={ title } đúng không anh/mọi người ?
@realhoanghai
@realhoanghai 3 жыл бұрын
đặt để tận dụng 2 way binding á b
@trandinhthang5778
@trandinhthang5778 2 жыл бұрын
không nhất thiết phải đặt trong mọi trường. trường hợp như bạn muốn set lại value rỗng thì mới cần
@amanda2348-g9j
@amanda2348-g9j Жыл бұрын
7:32 Tại sao đoạn này cũng dùng StrictMode mà nó không console log ra "Mounted" 2 lần vậy ạ, e thử nó console log ra 2 lần mà a?
@ThangNguyen-wh2vk
@ThangNguyen-wh2vk 9 ай бұрын
mình cũng bị như này, bây h bạn biết lý do chưa chỉ cho mình vs, mình cảm ơn bạn nhiều
@rayun7014
@rayun7014 8 ай бұрын
@@ThangNguyen-wh2vk Mình xóa StrictMode đi bạn mình cũng bị v
@amanda2348-g9j
@amanda2348-g9j 2 жыл бұрын
17:00 strictMode
@triuc8755
@triuc8755 Жыл бұрын
Có ai biết cách co, kéo của sổ ưindow phút @5:50 như anh sơn không? Chỉ mình với. Mò mãi không ra
@huyhoang8679
@huyhoang8679 3 жыл бұрын
Video bổ ích. Hời ơi bảo sao nó chạy vô tận, lên đọc docs chục lần vẫn ko biết chán nản luôn. Mà anh ơi đọc docs cũng phải có cách đúng ko ạ, em đọc doc thật sự thấy trang Mozila là giao diện đẹp, dễ nhìn dễ tim, dễ hiểu, em có đọc docs của Microsoft mà thấy rối quá.
@anhJourney
@anhJourney 3 жыл бұрын
docs nhiều cái xem hiểu sơ sơ thôi chứ chủ yếu vẫn phải có thầy dậy mới hiểu được bạn ạ. Như sau học react rồi học Material UI ko có thầy dạy bó tay luôn =))
@petslover4306
@petslover4306 2 жыл бұрын
Thật sự quá hay. Dạy rất có tâm ! Tuyệt vời.
@nguoixanh
@nguoixanh 2 жыл бұрын
Bạn ơi cho mình hỏi: Mình tạo custom hook (call API), tại component sử dụng nó, mình muốn là khi nhấn vào 1 button mới gọi hook để call API, nên mình call hook trong hàm handleClick, nhưng nó báo "Invalid hook call. Hooks can only be called inside of the body of a function component". Có cách nào giải quyết (trong thực tế đi làm) bạn nhỉ?
@trietnguyenhoangminh8811
@trietnguyenhoangminh8811 Жыл бұрын
này là do bạn đang dùng class component nên nó mới ko cho sử dụng hook đó
@linhtaquang8650
@linhtaquang8650 3 жыл бұрын
Mình làm giống anh Sơn, nhưng dùng API trên trang thời tiết. Cứ mỗi lần f5 thì giá trị lại trở về giá trị undifined, gây ra lỗi k trỏ đến được property mọi người có thể chỉ mình cách khắc phục không
@ngthuongnguyen9804
@ngthuongnguyen9804 2 жыл бұрын
A ơi cho e hỏi, sau lần .then() thứ nhất thì kết quả nhận về .then() thứ 2 chứa data rồi sao mình còn đặt state là mảng rỗng đc ạ
@F8VNOfficial
@F8VNOfficial 2 жыл бұрын
Ở phút/giây nào em nhỉ
@ngthuongnguyen9804
@ngthuongnguyen9804 2 жыл бұрын
@@F8VNOfficial vâng a, ở phần promis bắt đầu phút thứ 20 a ơi?
@F8VNOfficial
@F8VNOfficial 2 жыл бұрын
Mảng rỗng nó đặt làm initialState thôi em ơi, sau đó, API gọi lấy đc mảng dữ liệu posts (phần then thứ 2) sẽ set lại state em nhé. Sau khi set lại, thì state posts không phải là mảng rỗng ban đầu nữa.
@ngthuongnguyen9804
@ngthuongnguyen9804 2 жыл бұрын
Dạ vâng, e cảm ơn a!
@ngthuongnguyen9804
@ngthuongnguyen9804 2 жыл бұрын
cho e làm phiền a xíu nữa. cho e hỏi trong thằng .then() thứ 2 là: .then(posts => {setPosts(posts)} ) thằng posts đứng trước, trước khi setPosts nó rỗng hay chứa dữ liệu api trả về ạ. e cảm ơn anh
@vankhanhinfo
@vankhanhinfo 2 жыл бұрын
Cho em hỏi chút, mỗi lần nhập ký tự vào ô input thì lại re-render lại component, điều này có ảnh hưởng đến performant ko ạ, ví dụ component đó có nhiều element
@lightd1404
@lightd1404 Жыл бұрын
theo mình nghĩ là nõ cũng ảnh hưởng đó nhưng với dụ án to =)) cón như mh ví dụ nhỏ nhỏ thì chắc k sao
@thanhhuytruong31
@thanhhuytruong31 3 жыл бұрын
anh ơi , vậy return trong useEffect thì sao ạ
@tuanpham-vb5sd
@tuanpham-vb5sd 3 жыл бұрын
phần code return sẽ đc chạy khi component unmount đấy b
@vunguyenhuy3688
@vunguyenhuy3688 2 жыл бұрын
sao em viết như anh mà gọi content thì dù sài useEffect vẫn in ra mounted vậy
@vuongtranminh4890
@vuongtranminh4890 3 жыл бұрын
Nếu phần callAPI e để là 1 hàm return về posts ở giá trị initial của useState thì cũng chỉ được gọi có 1 lần như vậy có được không ạ? A giải thích cho e với ạ
@trandinhthang5778
@trandinhthang5778 2 жыл бұрын
useState sẽ được thực thi rồi mới render UI. viêc bạn call api sẽ block việc render UI rồi. vì vậy nên sử dụng useEffect vì hàm callback trong useEffect sẽ được gọi sau khi render UI. anh Sơn có giải thích khúc side effect đó bạn
@vuongtranminh4890
@vuongtranminh4890 2 жыл бұрын
@@trandinhthang5778 cảm ơn bạn mình hiểu rõ rồi
@namlethanh607
@namlethanh607 2 жыл бұрын
Anh cho em hỏi sao em mở cái console lên mà nó không hiện gì ạ
@manquangduy6932
@manquangduy6932 Жыл бұрын
trường hợp 1 nó lắp vô cùng là vì sao ạ
@Steve_Duong
@Steve_Duong 2 жыл бұрын
❤❤❤❤
@tripham8864
@tripham8864 3 жыл бұрын
Về sau anh có dùng axios để gọi api ko ạ. E đang dùng th này với useEffect nhưng còn khá mơ hồ
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
Khác gì đâu em nhỉ, trong JS có XHR và fetch để call API thôi. Thì axios cũng là dùng XHR thôi mà, mơ hồ kiểu gì em nói ra anh xem
@tripham8864
@tripham8864 3 жыл бұрын
@@F8VNOfficial dạ, khi e ở component con dùng POST và cập nhật lại state ở component cha có useEffect dùng GET thì lệnh GET của component cha ấy chưa nhận đc cái của th POST mà re-render luôn ạ. Có vẻ như vấn đề này là side effects chứ ko nằm ở axios ạ. E cảm ơn a đã quan tâm.
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
​@@tripham8864 Đúng rồi em, không liên quan gì tới axios hết em nhé. Em check lại xem tác nhân nào gây ra việc component cha bị re-render nhé, xem có thao tác nào setState hay dispatch redux action nào gây ra việc re-render đó.
@tripham8864
@tripham8864 3 жыл бұрын
@@F8VNOfficial em fix được rồi cảm ơn a. Hóng về sau a có video về tổ chức call API chứ gọi trực tiếp ở useEffect có vẻ ko chuyên nghiệp lắm :D
@F8VNOfficial
@F8VNOfficial 3 жыл бұрын
​@@tripham8864 Theo em không chuyên nghiệp ở chỗ nào em?
@DeepDiveIntoLife196
@DeepDiveIntoLife196 3 жыл бұрын
Chào anh ...
@DukeLe35
@DukeLe35 2 ай бұрын
xin qua 🎉
@vuongqtvn
@vuongqtvn 3 жыл бұрын
❤️
@hieunguyenthanh5328
@hieunguyenthanh5328 7 ай бұрын
❤❤❤❤
useEffect() with dependencies | React hooks 2021 | React JS
13:03
useState trong React hook | React hook 2021
19:51
F8 Official
Рет қаралды 96 М.
IL'HAN - Qalqam | Official Music Video
03:17
Ilhan Ihsanov
Рет қаралды 700 М.
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
useRef() hook | Cách sử dụng useRef() hook
17:35
F8 Official
Рет қаралды 64 М.
Two-way binding | Ràng buộc hai chiều | React hooks
28:07
F8 Official
Рет қаралды 82 М.
useReducer() hook | Khi nào sử dụng useReducer()?
15:58
F8 Official
Рет қаралды 51 М.
Beginner React.js Coding Interview (ft. Clément Mihailescu)
36:31
Ben Awad
Рет қаралды 2,2 МЛН
Global State with Context + useReducer |  Trạng thái toàn cục
28:54
Học useEffect - React Hooks (2021)
12:58
HoleTex
Рет қаралды 26 М.
Fetch | Khái niệm Fetch trong JavaScript
22:20
F8 Official
Рет қаралды 75 М.