我想实现以下目标。动作从redux
被导入到这个组件中。它从 firebase 数据库中获取数据。数据显示在此组件内。
我的问题是由于优化,每次安装组件时都会获取数据。我想阻止这种行为。我希望这仅在第一次渲染组件时获取,不再获取。当然,它应该在数据更改时获取,否则不会。我用过useCallback
,但下面的代码肯定有错误。用户通过身份验证时会传递 Token 和 Id。
import { fetchFavs } from "../../store/actions";
import { useSelector, useDispatch } from "react-redux";
const token = useSelector((state) => state.auth.token);
const id = useSelector((state) => state.auth.userId);
const fetchedFavs = useSelector((state) => state.saveFavs.fetchedFavs);
const dispatch = useDispatch();
const fetchFavsOptimized = useCallback(() => {
dispatch(fetchFavs(token, id));
console.log("rendered");
}, [token, id, dispatch]);
useEffect(() => {
if (token) {
fetchFavsOptimized();
}
}, [fetchFavsOptimized, token]);