Mẫu vật liệu UI + ReactJS + TypeScript (Phần 2)

Tram Ho

Tiếp nối phần 1 khi chúng ta đã hoàn thành được 1 nửa chặng đường khi đã hoàn thành xong các yêu cầu:

  • tạo checkbox
  • submit có dạng : {categories: [1, 2, 3, 4]
  • multi checkbox

bài viết này chúng ta sẽ hoàn thành các yêu cầu còn lại.


Yêu cầu:

  • tạo form cho 2 loại input text và checkbox + submit button
  • dữ liệu khi submit form có dạng (chỉ cần console.log trong hàm thực thi): {categories: [1, 2, 3, 4], meta: ["a", "b", "c"]}
  • meta ko được chứa dữ liệu rỗng
  • cho phép add or remove input text
  • multi checkbox

Phần 1


Start!!!

Mình sử dụng code của phần 1, nên các bạn nào mới có thể quay lại phần 1 và xem lại code giúp mình nhé

form.tsx

FormComponent.tsx

InputType

Và cuối cùng là DynamicInput

ok chúng ta đã có giao diện như sau

Tiếp theo như đề bài là ta có thể thêm input mỗi khi click button Add và remove input đó đi với button Remove, ta sửa lại 2 function ở trên nhé

Và đây là kết quả

Vậy là đã gần xong rồi đó, nhưng bất chợt nhận ra là nếu khi ta có nhiều hơn 1 input thì khi muốn sửa text của input 1 và input 2 thì sao? với code hiện tại sẽ như thế nào? giá trị sẽ vào state inputs ra sao? Chắc chắn nếu hiện tại bạn chạy project nên và nhập input, state inputs field content của các input sẽ không có nội dung gì cả, vậy để fix lỗi này ta làm như sau:

thêm hàm onChange cho DynamicInput

DynamicInput

Vậy là đã xử lý xong, handle lại chút function onSubmit để thấy kết quả nào

function helper getMeta

Run lại và xem kết quả xem đã đúng với yêu cầu đề bài chưa nào
Và đây là Source code của cả 2 phần.


Have a nice day!

Welcome to ReactJS!!!

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo