javascript - How to add item to an Array Type property in React Hook State Object?
问题描述
Check my code below. I want to push an image file to product_images array. I tried using concat()
also. But doesn't work.
const INITIAL_VENDOR_DATA = {
store_name: "",
store_contact_number: "",
website_url:"",
email:"",
city:"",
country:"",
fb_url: "",
categories:[],
product_images:[], <--------------- Array
store_type:"",
cp_name: "",
cp_contact_number: ""
}
const[vendorData,setVendorData] = useState({data: INITIAL_VENDOR_DATA}) //initializing
//Doesn't add the image to product_images array . here image is just a Image File
setVendorData({
data:{
...vendorData.data,
product_images:[...vendorData.data.product_images,image] <----- ??
}
})
解决方案
什么是联系()?
如果您在 reactjs 应用程序的适当上下文中使用上述内容,它将起作用。
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
const INITIAL_VENDOR_DATA = {
store_name: "",
store_contact_number: "",
website_url:"",
email:"",
city:"",
country:"",
fb_url: "",
categories:[],
product_images:[],
store_type:"",
cp_name: "",
cp_contact_number: ""
}
function App() {
const[vendorData,setVendorData] = useState({data: INITIAL_VENDOR_DATA}) //initializing
const image = "mypic.jpg";
//Put the setVendorData in a click handler or on mount useEffect
const handleClick = () =>{
console.log('Inspect this and see it works', vendorData);
setVendorData({
data:{
...vendorData.data,
product_images:[...vendorData.data.product_images,image]
}
})
}
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
<button onClick={handleClick}>Add Image</button>
</p>
<p style={{color: '#fff'}}>
{vendorData.data.product_images && vendorData.data.product_images.map( (image) => image + '\n')}
</p>
</header>
</div>
);
}
export default App;
你也可以做 vendorData.data.product_images.push(image)
推荐阅读
- php - Json php解析zomato
- ssas - SSAS 计算成员以确定属性具有值的百分比
- c# - 如何在 .NET Core 2.1 中重现复杂参数的 [FromUri] 行为
- javascript - 如何使用 JavaScript 过滤掉特定的 Web 元素
- c - 如何逐字获取输入而不获取C中的整个字符串?
- apache-spark - 为什么在 Spark 中缓存我的数据集之前查询速度更快?
- aws-lambda - 如何使用 aws lamda 和 ses 实现自定义验证邮件链接功能?
- r - 在 Shiny 应用程序中同时更新绘图和表格数据
- google-cloud-platform - 如何删除谷歌云平台项目中默认激活的 API?
- service-worker - 为子目录禁用 service worker