Būsena rankomis — trys perpiešimai kaskart
Kodo stulpelyje — būsena, kokia ji yra dabar: dešimt laisvų kintamųjų main.js viršuje. Nėra modulio, kuris jiems „priklausytų"; jie tiesiog guli greta.
Ir toggleFavorite — veiksmas, kuris paspaudus ♡ keičia favorites. Atkreipk dėmesį į pabaigą:
function toggleFavorite(pic) {
const i = favorites.findIndex(f => f.date === pic.date);
if (i >= 0) favorites.splice(i, 1);
else favorites.push({ ...pic, rating: 0, notes: '', tags: [] });
renderGallery({ isLoading, error, pictures: visiblePictures() }); // ♡ užpildymas
renderCollection(); // eilutė
renderHome(); // skaitiklis
}
Pats duomenų pakeitimas — dvi eilutės. O tada — trys perpiešimai, po vieną kiekvienam vaizdui, kuris rodo favorites. Tai veikia. Bet pažiūrėk, ko iš tavęs reikalauja: kiekvieną kartą, keisdamas favorites, privalai atsiminti visus tris. Ir taip su kiekvienu veiksmu, kuris liečia favorites — o jų bus daugiau (įvertinimas, žymos, pašalinimas).
Tai — „teisinga, bet trapi" versija. Ji veikia tik todėl, kad kažkas prisiminė iškviesti visus tris. Niekas to neužtikrina.
Patarimas. Pastebėk, kaip
renderpriklauso nuo daugybės laisvų kintamųjų (isLoading,error,visiblePictures(), kuris skaitosearchQuery…). Kai būsena išbarstyta, net „paprastas" perpiešimas turi surinkti gabalus iš visur. Kitas žingsnis parodys, kas nutinka, kai vieną gabalą pamiršti.