Viblo Learning

DISCUSSIONS

Wednesday, 6:41 AM

Vậy trên môi trường production thì cần cài gì để debug bạn nhỉ?

0
Wednesday, 3:05 AM

Hóng chốt 1 con đổi đời mà không có 😦

0
Wednesday, 2:20 AM

Cảm ơn bạn đã truyển tải kiến thức

0
Wednesday, 2:20 AM

Thanks anh, hóng phần 2 quá 😆😆😆

+1
Wednesday, 1:55 AM

ok mình sẽ sớm cập nhật lên git

0
Wednesday, 1:30 AM

bài viết rất hay và dễ hiểu, mong bạn ra thêm nhiều bài nữa về js và reactjs

0
Wednesday, 1:15 AM

ồ cái này đúng nè, thanks bận

0
Tuesday, 5:52 PM

Phát biểu rằng state là imutable và readonly là đúng, nhưng mới chỉ đúng một nửa câu chuyện, và ví dụ bạn lấy là sai. Cốt lõi vấn đề đó là địa chỉ. React ko phép gán biến state sang địa chỉ mới mà ko thông qua hàm setState, đồng thời React nhận biết và render lại màn hình dựa vào sự thay đổi địa chỉ ấy. Nhưng vẫn có cách làm thay đổi giá trị của biến state mà ko làm thay đổi địa chỉ của biến. Sau đây là 2 practice điển hình trong thực tế:

  • Nếu state là một mảng, bạn vẫn có thể push thêm phần tử vào mảng bình thường, giá trị của nó được thay đổi ngay luôn thời điểm ấy, nhưng địa chỉ của mảng vẫn thế nên React ko biết mà render lại. Khi bạn làm cho render tiếp một lần nữa, bạn sẽ thấy những phần tử mới đã được đẩy vào mảng rồi.
  • Nếu state ở một object, bạn vẫn có thể thực hiện gán giá trị mới cho thuộc tính của nó. Ví dụ: const [customerData, setCustomerData] = useState({ customerId: 1 }) ..... customerData.customerId = 2; console.log("customerId là: ", customerData.customerId); // 2 // thậm chí thêm thuộc tính mới cho state ngay và luôn cũng được customerData.customerName = "Tèo"; console.log("customerName là: ", customerData.customerName); // Tèo

Đương nhiên ko khuyến khích làm cách này, vì rất khổ cho người fix bug. Chúng ta nên làm theo luồng logic thông thường, khi nào cần gán giá trị mới thì khởi tạo hay là chế một object, một array mới rồi dùng setState mà gán. Trong trường hợp muốn gán ngay mà ko đợi vòng đời sau mới cập nhật thay đổi, bạn có thể thay bằng dùng useRef, hoặc ok dùng cách này nếu bạn biết chắc mình đang làm cái gì và có ảnh hưởng gì ko. Vì màn hình sẽ render lại mỗi khi state thay đổi, vậy nên bạn cần đặt câu hỏi lớn hơn, "Chỗ này có cần thiết phải render lại ko? Chỗ này có khiến chương trình bị render quá nhiều ko?". Từ đó bạn đưa ra quyết định.

0
Tuesday, 4:48 PM

showbiz có Trấn Thành nói câu nào là trending câu đó, viblo có Trực sa tank viết bài nào trending bài đó

0
Tuesday, 4:04 PM

Bài viết bổ ích quá, chắc bạn chịu khó tnay thì k có bạn gái đâu nhỉ

0
Tuesday, 4:02 PM

oke bạn nhé 😄

0
Tuesday, 3:28 PM

má, cám ơn bác nhiều. nãy giờ thấy code mẫu trên gg ko hiểu tại sao phải có nginx trong khi local có cần nginx đâu 😄 tks

+1
Tuesday, 1:17 PM

Tôi cũng đang làm theo cách này, quản lý view/css/js = thư mục đánh theo tên là đc mà.

0
Tuesday, 11:35 AM

Bác giải thích giúp e là tại sao của e luôn bị sender nốt found k ạ. e đã làm như hướng dẫn rồi Screen Shot 2021-01-19 at 16.51.51.png

0
Tuesday, 10:17 AM

@dinhmh Khi tạo payload, mình đã đệm =00 vào giữa những chữ cái để khi convert.quoted-printable-decode nó sẽ xóa hết những byte đó đi, sau đó như mình đã giải thích phía trên, sử dụng chuyển đổi bảng mã UTF-16 sang UTF-8 để loại bỏ Payload thứ 2 và decode base64 để ra đoạn mã hoàn chỉnh 😄

0
Viblo
Let's register a Viblo Account to get more interesting posts.