首页 > 解决方案 > useEffect 未设置反应挂钩

问题描述

我有一个看起来像这样的 useEffect 函数。

    useEffect(() => {
        getColls()
        console.log(pageColl)
    }, [])

getCols() 函数设置 pageColl 变量。

//getColls()
    const getColls = () => {
        Service.getCollections()
        .then(data => 
            setPageColl(data.collections.find(coll => coll._id === userId))
        )
    }
//states
const [pageColl, setPageColl] = useState(null);

pageColl 应该设置为一个对象,但由于某种原因,当我尝试使用 console.log(pageColl) 时,我返回了一个空值。就好像 setPageColl 从未被调用过。我知道数据是在 getCols 中返回的,因为我可以在那里 console.log 它。

标签: reactjsreact-hooksuse-effect

解决方案


您不能在调用 getCols() 方法后立即检查“pageColl”状态,因为 api 调用是异步的。

 useEffect(() => {
    console.log(pageColl)
}, [pageColl])

你可以像上面一样检查


推荐阅读