Yêu cầu thg 9 15, 2021 2:43 SA 65 0 1
  • 65 0 1
+1

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

Chia sẻ
  • 65 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 CÂU TRẢ LỜI


Đã trả lời thg 9 15, 2021 11:48 SA
+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!

Chia sẻ
Avatar Hoang vn @wiliamfeng
thg 9 16, 2021 2:47 SA

@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ỉ

Avatar Phat Lam @ltienphat1307
thg 9 16, 2021 9:12 SA

@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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí