【发布时间】:2020-04-06 07:43:21
【问题描述】:
我正在尝试实现一个简单的“添加到收藏夹”功能,但无法在本地存储中完全正常工作。
我可以将对象/数组推送到本地存储并取回它,但是当我单击下一项“添加到收藏夹”时,我最终会覆盖前一项,而不是向数组添加新对象。
代码如下:
const push1 = async (movieId, movieName, image) => {
const stringId = JSON.stringify(movieId);
const stringName = JSON.stringify(movieName);
const stringImage = JSON.stringify(image);
// our array
let moviesList = [];
// our object
let movies = {
movieId: stringId,
movieName: stringName,
image: stringImage
};
moviesList.push(movies);
// storing our array as a string
localStorage.setItem("movieList", JSON.stringify(moviesList));
let updatedMoviesList = [];
const retrievedMovies = localStorage.getItem("movieList");
const parseRetrievedMovies = JSON.parse(retrievedMovies);
console.log("retrievedMovies: ", retrievedMovies);
console.log("parseRetrievedMovies: ", parseRetrievedMovies);
parseRetrievedMovies.push(movies);
};
如果同一个对象不存在,我如何更新数组?
【问题讨论】:
-
localhost.getItem 返回 null 是什么都没有。只是在推送之前检查它。也不需要前 3 行 -> const stringId = JSON.stringify(movieId); .创建完整的普通对象,然后在添加到本地主机之前进行字符串化。
标签: javascript arrays reactjs ecmascript-6 local-storage