Thắc mắc về biến `initialValue` trong hooks
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
mình cám ơn rất nhiều
1 CÂU TRẢ LỜI
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!
@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ỉ
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