Eu uso o React e quero adicionar o título do filme no array, mas não consigo fazer isso e mostrar na interface do usuário. Por favor me ajude. Assisti a uma pergunta semelhante e, na minha opinião, não há resposta para minha pergunta. alerta, o trabalho está certo. mas useEffect sempre mostra uma matriz vazia. Observe meu código e escreva a resposta, por favor :)
import {useEffect, useState} from 'react';
import {OneFilm} from "./OneFilm";
import {Link} from 'react-router-dom';
import {Film} from "../../interfaces";
import styles from '../../css/AllFilms.module.css';
export function AllFilms() {
const [allFilms, setAllFilms] = useState<Film[]>([]);
const [selectedFilms, setSelectedFilms] = useState<string[]>([])
const fetchFilms = async () => {
try {
const response = await fetch(`URL`, {
headers: {
'X-API-KEY': process.env.REACT_APP_TOKEN
}
});
const dataResp = await response.json();
setAllFilms(dataResp);
} catch (error) {
console.error('Ошибка при получении фильмов:', error);
}
};
const selectFilm = (filmTitle: string) => {
alert(filmTitle)
setSelectedFilms(prev => [...prev, filmTitle])
}
useEffect(() => {
fetchFilms()
}, [])
useEffect(() => {
console.log(selectedFilms)
}, [selectedFilms])
return (
<div className={styles.container}>
<ul className={styles.films}>
{
allFilms.map((film) => (
<Link to={`/id=${film.id}`} key={film.id} onClick={() => selectFilm(film.name)}>
<OneFilm film={film}/>
</Link>
)
)}
</ul>
<div className="selected__films">
<ul>
{selectedFilms.map((film) => (
<li>{film}</li>
))}
</ul>
</div>
</div>
);
}
Talvez não funcione porque eu redireciono para outra página?