我使用usestate来创建saveImages和setSaveImages,这个首字母作为数组,我想每次调用函数时,内容是不同的,所以每次都必须推送到那个信息的数组,而不是做推送,只替换数组的一个位置,不添加不同的信息。我不知道我是否能解释一下
const galery = useSelector((state) => state.search);
const dispatch = useDispatch();
const [saveImages, setSaveImages] = useState([]);
function savePhoto(e) {
e.preventDefault();
const { target } = e;
const content = target.photo.src;
setSaveImages(content)
console.log(content)
localStorage.setItem("img", saveImages);
dispatch(actionAddFavorite(content));
}
return(
<section className="w-full gap-0 sm:columns-2 md:columns-3 xl:columns-4 2xl:columns-5 3xl:columns-6">
{galery.map((item, index) => {
return (
<form onSubmit={savePhoto} key={index} className="relative">
<button className="bg-gray absolute left-5 top-3 shadow-md">
Guardar
</button>
<img
name="photo"
className="object-cover p-2"
src={item.urls.regular}
alt={item.alt_description}
/>
</form>
);
})}
</section>
)发布于 2022-11-09 12:14:06
您可以将saveImages设置为包含"content",但您希望将"content“添加到现有的saveImages数组中。下面是您可以这样做的方法:
setSaveImages(oldImages => {
return [...oldImages, content];
});这里你可以了解所有你需要了解的关于反应状态的信息
https://stackoverflow.com/questions/74374307
复制相似问题