setState 包含 object=>array=> objects

setState containing object=>array=> objects

我有的是

const [productData, setproductData] = useState({
    title: "",
    description: "",
    price: "",
    selectedFile: "",
    images: [{ _id: "", urls: "" }],
  });

我将如何更改 IMAGES 对象中的值。我想更改 ID 和 Urls。

我试过以下方法都没有成功。

  setproductData({
    ...productData,
    images: [...productData.images._id, i],  //where i is any id or number
  });

但是当我尝试执行它时它说 productData.images.id 不可迭代。有什么帮助吗...

试试这个

 setproductData({
    ...productData,
    images: [{...productData.images[0], _id: i}], 
  });

如果你想修改选择的 id 只需使用

    setproductData({
        ...productData,
        images: productData.images.map((image) => {
          if (image._id === i) return {...image} // modify here
          return image
        }), 
    });

其中 newId 是您的新 _id,newUrls 是您的新网址

setProductData(prev => ({
  ...prev,
  images: [...prev.images, {_id: newId, urls: newUrls}]
})