这个警告是为什么呀

来源: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 要在什么时候运行,那么这些警告不改也没有关系。


0
0

React18+TS高仿AntD从零到一打造组件库

设计,开发,测试,发布再到 CI/CD,从0到1造轮子

2123 学习 · 959 问题

查看课程