Asked Sep 15th, 2:43 AM 41 0 1
  • 41 0 1
+1

Thắc mắc về biến `initialValue` trong hooks

Share
  • 41 0 1

Các bạn cho mình hỏi biến initialValue trong file hook useStorage lấy từ đâu ra vậy ? Mình không hiểu tại sao có thể tự nhiên lấy biến này để dùng

https://github1s.com/WebDevSimplified/useful-custom-react-hooks/blob/HEAD/src/8-useStorage/useStorage.js

mình cám ơn rất nhiều

1 ANSWERS


Answered Sep 15th, 11:48 AM
+1

Hi @wiliamfeng

Mình có chạy thử thì và đoán là có thể chổ đó tác giả code lỗi do gõ nhằm. Mục đích của tác giả ở đây là kiểm tra defaultValue có phải là function hay không, nếu phải thì thực thi function đó, vì trong thực tế có thể defaultValue cần được xử lý qua nhiều logic tuỳ thuộc vào ứng dụng.

Cho nên code mình thử sửa lại hook useStorage thế này

if (typeof defaultValue === "function") {
  return defaultValue()
} else {
  return defaultValue
}

Trong component, thì mình test thử bằng cách gọi useLocalStorage với 2 cách thì đều work cả

const [age, setAge] = useLocalStorage("age", 26)
const [count, setCount] = useLocalStorage("count", () => {
  return 267 // logic của bạn, có thể sẽ xử lý nhiều ở đây
})

Hope this help!

Share
Avatar Hoang vn @wiliamfeng
Sep 16th, 2:47 AM

@ltienphat1307 trường hợp này ảo bạn nhở, sao xem ông ấy demo code ở đây vẫn chạy vèo vèo: https://www.youtube.com/watch?v=vrIxu-kfAUo&t=536s&ab_channel=WebDevSimplified

Mà mình kiếm dưới comment xem có ai hỏi không cũng chằng thấy ai đề cập đến, với lại mình thắc mắc mình lấy đoạn code ấy về

tại sao trong VScode mình nó cũng không báo lỗi nhỉ, nếu mà bình thường nó phải show ngay lỗi gạch đỏ chứ nhỉ

0
| Reply
Share
Avatar Phat Lam @ltienphat1307
Thursday, 9:12 AM

@wiliamfeng

Lỗi có thể xảy ra khi truyền vào useStorage một function, nhưng đây là lỗi logic, k phải lỗi thực thi nên sẽ khó thấy được trên console

Còn VScode không báo thì còn phụ thuộc vào config của bạn nữa. Nếu có cài những extension như jslint , jshint có thể sẽ báo. Còn nếu bạn xài typescript thì sure 100% là báo

+1
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.