这个警告是为什么呀
来源:3-12 自定义 hook 第三部分 - 正确的方式完成 URLLoader

精慕门0505758
2021-11-13
import { useState, useEffect } from 'react'
import axios from 'axios'
const useURLLoader = (url: string, deps: any[] = []) => {
const [data, setData] = useState<any>({
loading: true,
message: null
})
const [loading, setLoading] = useState(false)
useEffect(() => {
setLoading(true)
console.log('wjclog axios get')
axios.get(url).then(result => {
console.log('wjclog axios got')
setData(result.data)
setLoading(false)
})
}, deps)
return [data, loading]
}
export default useURLLoader
const [data, loading] = useURLLoader('https://dog.ceo/api/breeds/image/random')
写回答
1回答
-
张轩
2021-11-14
同学你好 这个警告是因为 effect 的第二个参数,react开发工具会自动帮你检测 effect 里面的依赖,第一是说我们传递了一个数组,它无法分析里面的内容,第二是说我们这里没有把 url 加入到 deps,所以有这个警告,当然如果你的逻辑确实不需要检测 url 的变动,自己很清楚哪些effect 要在什么时候运行,那么这些警告不改也没有关系。
00
相似问题