useEffect
和 useCallback
是 React 中的两个重要的 Hooks API。
在 useEffect
中使用获取的 useCallback
用法不正确。
useCallback
返回的是一个函数,而 useEffect
的第一个参数也需要是一个函数。如果直接在 useEffect
中使用 useCallback
,可能会导致类型不匹配的问题。
正确的做法是将 useCallback
放在 useEffect
外部,并将依赖数组传递给 useCallback
。然后在 useEffect
中调用这个缓存的函数。
import React, { useState, useEffect, useCallback } from 'react';
const MyComponent = () => {
const [data, setData] = useState(null);
// 使用 useCallback 缓存函数
const fetchData = useCallback(() => {
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => setData(data));
}, []);
// 在 useEffect 中调用缓存的函数
useEffect(() => {
fetchData();
}, [fetchData]);
return (
<div>
{data ? <div>{JSON.stringify(data)}</div> : <div>Loading...</div>}
</div>
);
};
export default MyComponent;
通过这种方式,可以确保 useEffect
中使用的函数是最新的,并且避免了不必要的重新渲染。
领取专属 10元无门槛券
手把手带您无忧上云