我使用usestate创建saveImages和setSaveImages,这个初始为数组,我想每次我调用函数,内容是不同的,所以每次必须推到数组的信息,但不是做推,只替换数组的1个位置,不添加新的位置与不同的信息。我不知道我是否解释清楚了
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>
)
你设置你的saveImages包含"content",但你想添加的是"content"到现有的saveImages数组。你可以这样做:
setSaveImages(oldImages => {
return [...oldImages, content];
});
在这里你可以了解到react
中关于state的所有信息