Похоже, что при начальном рендеринге prismicCtx
равен null
, и только при последующем рендеринге вы получаете обновленное значение.Очевидно, что решение состоит в том, чтобы вызвать влияние на изменение prismicCtx
, но если вы просто хотите вызвать API при первоначальном рендеринге, вам нужно будет отслеживать, вызывали ли вы API раньше или нет, чего вы можете достичь с помощью useRef
а также вам не нужно устанавливать состояние как пустое, если prismicCtx
не существует
const Footer = ({ prismicCtx }) => {
const [links, setLinks] = useState([]);
const isFirstCall = useRef(true);
useEffect(() => {
if(prismicCtx && isFirstCall.current) {
const fetchLinks = async () => {
const data = await prismicCtx.api.query([
Prismic.Predicates.at('document.tags', [`${config.source}`]),
Prismic.Predicates.at('document.type', 'footer'),
]);
console.log('data:', data);
setLinks(data.results[0].data);
};
fetchLinks();
isFirstCall.current = false;
}
},[prismicCtx]);
return (
<div>
<h1> Footer </h1>
</div>
);
};
export default Footer;