Todo App with useReducer() hook | Hiểu rõ hơn về useReducer()

Поделиться
HTML-код
  • Опубликовано: 15 сен 2024
  • 👉 Xem Lộ Trình Học: fullstack.edu....
    👉 Đăng Ký Học Offline Tại F8: short.f8team.d...
    Trong video này chúng ta sẽ đến với một ứng dụng Todo App with useReducer() hook | Hiểu rõ hơn về useReducer()
    #hoclaptrinh #hoclaptrinhmienphi #javascript #reactjs #frontend #backend #devops #f8
    -------
    ☻ Phần mềm sử dụng trong video:
    Công cụ dịch Tiếng Anh: bit.ly/2Wsuhet
    Công cụ đo đạc giao diện web: s.net.vn/D8kL
    Công cụ viết CV xin việc chuyên nghiệp: mycv.vn
    --------------
    ☻ Khóa học lập trình web MIỄN PHÍ:
    Kiến thức nhập môn: fullstack.edu....
    Xây dựng giao diện với HTML, CSS: fullstack.edu....
    Xây dựng web responsive: fullstack.edu....
    Lập trình Javascript cơ bản: fullstack.edu....
    Lập trình Javascript nâng cao: fullstack.edu....
    Làm việc với Terminal & Ubuntu: fullstack.edu....
    Xây Dựng Website với ReactJS: fullstack.edu....
    Xây dựng web với Node & Express: fullstack.edu....
    HTML, CSS tips: fullstack.edu....
    Ứng dụng cảnh báo khi sờ lên mặt: fullstack.edu....
    Xem thêm tại: fullstack.edu....
    -------------------------------------
    F8 Official
    (c) Sơn Đặng
    Website: fullstack.edu.vn
    Facebook cá nhân: / sondnf8
    Nhóm Học Lập Trình Web: / f8official
    Email: contact@fullstack.edu.vn
    © Bản quyền thuộc về Channel F8 Official ☞ Do not Reup
    © Nghiêm cấm sử dụng video nhằm mục đích thương mại dưới mọi hình thức.

Комментарии • 57

  • @huynhucthanhtuan7948
    @huynhucthanhtuan7948 2 года назад +5

    Lại phải cảm ơn anh rất nhiều, em đã học được rất nhiều khóa học chất lượng từ anh. Chúc anh luôn có sức khỏe, có cảm hứng để sản xuất thêm nhiều khóa học chất lượng nữa cho cộng đồng ạ

  • @dinhanhtuan22
    @dinhanhtuan22 Год назад +7

    1. Initial value
    2. action
    3. reducer
    4. dispatch
    const [state, dispatch] = useReducer(, )
    The `reducer` function contains your custom state logic and the `initialState`can be a simple value but generally will contain an object.
    The `useReducer` Hook returns the current `state`and a `dispatch`method

  • @hoangminh4824
    @hoangminh4824 2 года назад +7

    Đang ngồi học clip của anh định xem youtube giải trí tí thì quả thumbnail lại đập vào mặt =))

  • @h_sangg9459
    @h_sangg9459 2 года назад +2

    thật sự cảm ơn anh rất nhiều ạ, em học vừa code lại được theo useReducer, vừa theo useState được

  • @KhangNguyen-kq2iw
    @KhangNguyen-kq2iw 2 года назад

    ông nào làm thumbnail công nhận xịn xò thật sự, nhìn là muốn bấm vào xem r :)))

  • @quynhmaixinhgai
    @quynhmaixinhgai 2 года назад +2

    E cảm ơn vì bài học bổ ích của a. Nếu có thời gian rảnh, a làm thêm video về Redux với Redux-Saga hoặc những thư viện đi kèm với React như Reactive-Form ,hay axios a nhá

    • @ThangTran-hi3es
      @ThangTran-hi3es Год назад

      gái ham học thế, ngưỡng mộ :v

    • @HuyNguyen-qp9cn
      @HuyNguyen-qp9cn Год назад

      @@ThangTran-hi3es có khi ông đang nói chuyện với đàn ông đấy =))

    • @ThangTran-hi3es
      @ThangTran-hi3es Год назад

      @@HuyNguyen-qp9cn nghi lắm, mấy chú giả gái để đc ưu ái lắm

  • @tranngocthang5087
    @tranngocthang5087 2 года назад +2

    Anh Sơn dạy rất hay và có tâm. Nếu Anh có thể làm 1 series dạy về lập trình C, C++ hay JaVa thì tốt quá ạ !!

  • @lenhac9040
    @lenhac9040 2 года назад

    Quả thumbnail chất lượng thật sự😂😂

  • @BaoTran-ir9xg
    @BaoTran-ir9xg 2 года назад +1

    Bài rất dễ hiểu. Anh có thể ra thêm video sử dụng useReducer để render các Object lồng nhau được không ạ

  • @lokissdo9965
    @lokissdo9965 2 года назад +4

    Về phần input onChangr cho em hỏi là tại sao mình không dùng ref rồi khi nào add thì mình mới dùng e.target.value thôi ạ, mình re-render component kiểu này có tốt về trải nghiệm không ạ?

    • @nguyenthang7850
      @nguyenthang7850 4 месяца назад

      Tại ảnh in cái job ra nếu kh liên tục setjob thì nó kh render, hong biết đúng v kh nữa

  • @sonminhpham8118
    @sonminhpham8118 2 года назад

    Giờ mới biết anh sơn cũng có tính khiếu hài khi nhìn vào thumnail 😀

  • @TrungLe-kp9tg
    @TrungLe-kp9tg 2 года назад

    Nhìn thumbnail là muốn học rồi =))

  • @KienDTPS
    @KienDTPS 2 года назад

    Ngồi nghe anh giảng em say quá 😂😂😂

  • @duynguyentan5679
    @duynguyentan5679 2 года назад

    Quả thumbnail chất quá a ưi :))

  • @ThaiPham-pc3dm
    @ThaiPham-pc3dm 2 года назад +1

    Cảm ơn a nhiều, A có thể hướng dẫn làm speech to text bên react native được không ạ.

  • @metablibv37
    @metablibv37 2 года назад

    Đang lướt tìm video giải trí thấy quả thumbnail :))))))))))

  • @minhhoang576
    @minhhoang576 2 года назад

    cảm ơn anh Sơn, video rất hay.

  • @transi2844
    @transi2844 2 года назад

    cho em hỏi sao em setLocalstorage mỗi lần em f5 lại nếu không thêm giá trị thì vẫn còn, nhưng nếu thêm giá trị mới thì giá trị cũ mất hết ạ thay bằng giá trị mới. em cảm ơn

  • @vuthien9342
    @vuthien9342 2 года назад

    thumbnail đỉnh vậy a :D

  • @trongcuong7855
    @trongcuong7855 3 месяца назад

    cảm ơn anh

  • @hungoan7699
    @hungoan7699 2 года назад

    cho e hỏi nếu đã là hằng thì viết hoa thế sao mấy thằng khác cũng là const mà k phải viết hoa?

  • @thetannguyen9389
    @thetannguyen9389 2 года назад +1

    ở dòng 57, nếu newJobs em không spread ra (const newJobs = state.jobs) thì 1 lần xóa nó sẽ mất 2 phần tử liền kề nhau, mà khi console.log(newJobs) sau khi splice thì em chỉ thấy có 1 phần tử bị xóa, vậy mà trên UI bị mất 2 phần tử là sao vậy ạ?

    • @linhhhuyenn_6099
      @linhhhuyenn_6099 2 года назад

      cùng câu hỏi ạ

    • @free2idol1
      @free2idol1 2 года назад

      giải thích hết thì hơi dài dòng nhưng nói chung bạn sai ở chỗ là nếu ko dùng spread operator mà dùng const newJobs = state.jobs thì newJobs sẽ chỉ là 1 reference của state.jobs thôi nên sau đó khi dùng newJobs để xửa lí logic tiếp thì kết quả cuối cùng ra sẽ ko như ý muốn (vì ngay lúc đầu tiên đã sai thì cái cuối cùng ko thể đúng được).

    • @HoangHuy-md8ng
      @HoangHuy-md8ng 2 года назад

      @@free2idol1 t cũng đang thắc mắc đoạn này. Nếu không phiền bạn có thể giải thích được không ạ? Hay có bài viết nào về nó không ạ

    • @free2idol1
      @free2idol1 2 года назад

      @@HoangHuy-md8ng
      React của bạn chỗ file index.js để nên reducer() sẽ bị gọi 2 lần (bạn upgrade lên react 18 sẽ thấy reducer được gọi 2 lần)... và khi bạn dùng const newJobs = state.jobs thì newJobs cũng chính là state.jobs... sau đó khi bạn splice() nó sẽ remove 1 property của newJobs thì state.jobs cũng bị removed 1 phần tử. Và ở lần call thứ 2 thì cũng lặp lại tình trạng như vậy. Cuối cùng khi render ra thì phần tử đầu tiên và kế nó sẽ bi removed.

  • @ComradeBao
    @ComradeBao 2 года назад

    Ảnh nền thú vị thế ạ :))

  • @dennisnguyen5787
    @dennisnguyen5787 2 года назад

    bài này xoắn não quá a ạ x_x

  • @petslover4306
    @petslover4306 2 года назад

    Thầy có thể ra video dạy về react native không ạ

  • @tienhuynh2435
    @tienhuynh2435 Год назад

    khá dễ hiểu

  • @inhxuanhanh3978
    @inhxuanhanh3978 2 года назад +1

    Quả thumbnail cười chết 😂

  • @luannguyenthanh1629
    @luannguyenthanh1629 2 года назад

    Anh Sơn có thể quay một video về JWT được không ạ

  • @enzo4828
    @enzo4828 Год назад

    const handleAdd = () => {
    dispatch(addJob(inputRef.current.value))
    dispatch(setJob(''))
    inputRef.current.focus()
    }
    funct Add
    điều chỉnh lại trong input, bỏ onChange + value.
    M k giỏi giải thích, phiền Sơn expland hộ mình

  • @NamNguyen-sy6ey
    @NamNguyen-sy6ey 2 года назад

    9:52 kiểu dữ liệu của action.type là string sao dùng được case là SET_JOB vậy anh ?

    • @F8VNOfficial
      @F8VNOfficial  2 года назад

      SET_JOB là constants thôi mà em, trong ví dụ này thì nó lưu string đấy em

  • @tuananhnguyen757
    @tuananhnguyen757 Год назад

    Lúc ô input nó trống, anh nhấn add nó vẫn nhận vào mảng luôn ấy ạ

  • @Whyrulookingatmyname
    @Whyrulookingatmyname 2 года назад

    Ok anh Sơn lao công :)

  • @hoquang3755
    @hoquang3755 2 года назад

    thumbnail chất quá a :v

  • @uctamnguyen1593
    @uctamnguyen1593 2 года назад

    tại sao lại gán value input vào state làm gì ạ, e thấy mỗi lần thây đổi value thì rerender

    • @F8VNOfficial
      @F8VNOfficial  2 года назад +1

      Để binding dữ liệu nhập tại input vào state đó em. Khi làm việc với dữ liệu của input thì ta sẽ thao tác với state tương ứng. Ngoài ra, em có thể dùng state của chính input truyền vào value props của input, điều này giúp binding dữ liệu 2 chiều (input thay đổi state cũng thay đổi, state thay đổi dữ liệu trong input cũng thay đổi). Từ đó, ta có sự đồng nhất giữa UI (giao diện người dùng) và dữ liệu/trạng thái ứng dụng. Ví dụ, để viết logic xoá text trong 1 input thì ta sẽ set state của input đó về chuỗi rỗng.

    • @uctamnguyen1593
      @uctamnguyen1593 2 года назад

      @@F8VNOfficial cảm ơn anh

  • @minhvu0906
    @minhvu0906 2 года назад

    dispatch(addJob(job)) ở trên liền với dispatch(setJob('')) ở dưới, nó chạy bất đồng bộ đúng ko anh

  • @wangdat
    @wangdat 2 года назад

    nếu mọi người học đầy đủ vài hôm video này nhiều view nhất cho xem =)))

  • @j1s0o
    @j1s0o 2 года назад

    Rồi bài sau là Redux phải không anh !

  •  2 года назад

    mong a sớm có video redux ^^

  • @maitoshikigami4035
    @maitoshikigami4035 2 года назад

    Hảo thumbnail XD

  • @nguyenAudio77
    @nguyenAudio77 2 года назад +1

    Bài khó thật anh

  • @ucluu2948
    @ucluu2948 3 месяца назад

    clip ngắn mà mất 1 tiếng rưỡi để hiểu và code lại =))

  • @congnamle3632
    @congnamle3632 2 года назад

    Thumb nail hài vãi 😁😁😁

  • @nguyenhoangsinh3367
    @nguyenhoangsinh3367 2 года назад

    Love youu

  • @tamlongnguyen6604
    @tamlongnguyen6604 2 года назад