Javascript 试图将一组对象作为道具传递,但react仍将其作为对象读取
我试图用从API中筛选资源并删除一些不必要的对象键后获得的数据呈现一个表,但每当我试图将数组作为道具传递给我的表组件时,我都会收到一个错误,说“对象作为道具类型无效”。 我的过滤函数Javascript 试图将一组对象作为道具传递,但react仍将其作为对象读取,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我试图用从API中筛选资源并删除一些不必要的对象键后获得的数据呈现一个表,但每当我试图将数组作为道具传递给我的表组件时,我都会收到一个错误,说“对象作为道具类型无效”。 我的过滤函数 const handleFetch = (query) => { const search = Accountdetails?.filter( (data) => data.holderArpAccountNumber == query, ); return sear
const handleFetch = (query) => {
const search = Accountdetails?.filter(
(data) => data.holderArpAccountNumber == query,
);
return search;
};
我的阵列:
const data = handleFetch(accountNumber)?.map((item) => {
return {
check: <Checkbox />,
id: 1,
holderName: item.holderName,
certificateNumber: item.certificateNumber,
holderCompanyAccountNumber: item.holderArpAccountNumber,
clientCompany: item.issuingCompanyName,
shareVolume: item.volumeOfBonds,
};
});
const data=handleFetch(accountNumber)?.map((项目)=>{
返回{
支票:,
id:1,
holderName:item.holderName,
certificateNumber:item.certificateNumber,
holderCompanyAccountNumber:item.holderArpAccountNumber,
客户公司:item.issuingCompanyName,
shareVolume:item.volumeOfBonds,
};
});
表组件:
<Table headers={headers} body={data} />
function Table({ headers, body }) {
return (
<div className="preview_and_save">
<div className="greenpole-header">Exported CSCS Advice File</div>
<table cellSpacing={1} cellPadding={0} className={'tableGrid'}>
<thead className={'tableHead'}>
<tr>
{headers.map((item, i) => {
return <td key={i}>{item}</td>;
})}
</tr>
</thead>
<tbody className={'tableBody'}>
<tr>
{body.map((item, j) => (
<td key={j}>{item}</td>
))}
</tr>
</tbody>
</table>
</div>
);
}
export default Table;
表组件:
<Table headers={headers} body={data} />
function Table({ headers, body }) {
return (
<div className="preview_and_save">
<div className="greenpole-header">Exported CSCS Advice File</div>
<table cellSpacing={1} cellPadding={0} className={'tableGrid'}>
<thead className={'tableHead'}>
<tr>
{headers.map((item, i) => {
return <td key={i}>{item}</td>;
})}
</tr>
</thead>
<tbody className={'tableBody'}>
<tr>
{body.map((item, j) => (
<td key={j}>{item}</td>
))}
</tr>
</tbody>
</table>
</div>
);
}
export default Table;
函数表({headers,body}){
返回(
导出的CSCS建议文件
{headers.map((项,i)=>{
返回{item};
})}
{body.map((项,j)=>(
{item}
))}
);
}
导出默认表;
logging typeOf data给出一个对象,但logging Array.isArray(data)给出true
typeOf[]
将返回object
,因为在JavaScript中数组是一种特殊类型的对象
,其中键是索引号。
尝试控制台日志记录
数据
并查看其中的内容。typeof[]
将返回对象
,因为在JavaScript中数组是一种特殊类型的对象
,其中键是索引号。
尝试控制台日志记录
数据
并查看其中的内容。我制作了一个对象克隆器函数;看看
//这个克隆函数的工作原理是,它获取对象的所有属性名,并将其设置为它们的值。。递归函数适用于具有多个层的对象。。stringToFile函数是我用来理解正在进行的链接(如循环数据)的函数。。以及它看到与其他对象相等的对象的位置。。它会复制这个版本
功能克隆(obj){
if(typeof obj!=“object”){const x=obj;返回x}
函数stringToFile(m,files){var x=files
如果(!m | | m==“”){return(files)}var error=0
m=m.split('\\');m.forEach(a=>{if(x[a]){x=x[a]}else{error=1})
if(x==files | | error){return(0)}return(x)
}
var newObj={};if(数组的obj实例){newObj=[]}
var arr=[];var arr1=[];var newObj1=newObj
函数递归(obj,newObj,string){
Object.getOwnPropertyNames(obj).forEach((a,i)=>{const string1=string
常量x={[a]:Object.getOwnPropertyDescriptor(obj,a)}
if(对象的类型=对象”&&obj[a]!=null){
newObj[a]={};if(obj[a]数组实例){newObj[a]=[]}
如果(!arr.includes(obj[a])){
arr.push(obj[a]);if(string==“”){string+=a}else{string+=`\\\${a}}
arr1.push(字符串);递归(obj[a],newObj[a],字符串)
}
else{newObj[a]=stringToFile(arr1[arr.indexOf(obj[a])],newObj1)}
string=string1;返回;
}Object.defineProperties(newObj,x)
})
}递归(obj,newObj,“”);返回newObj
}
//示范
var myObj={a:1,b:2,c:{d:3,e:{f:4}}
myObj.f=myObj//使其循环以供演示
var clonedObj=克隆(myObj)
console.log(clonedObj==myObj)//false
console.log(myObj.f==clonedObj.f)//false
clonedObj.a++;clonedObj.c.d++//这些仅在克隆中添加
log([clonedObj.a,clonedObj.c.d])//2,4
log([myObj.a,myObj.c.d])//1,3
console.log(myObj);console.log(clonedObj)//自己查看全部差异
我制作了一个对象克隆器函数;看看
//这个克隆函数的工作原理是,它获取对象的所有属性名,并将其设置为它们的值。。递归函数适用于具有多个层的对象。。stringToFile函数是我用来理解正在进行的链接(如循环数据)的函数。。以及它看到与其他对象相等的对象的位置。。它会复制这个版本
功能克隆(obj){
if(typeof obj!=“object”){const x=obj;返回x}
函数stringToFile(m,files){var x=files
如果(!m | | m==“”){return(files)}var error=0
m=m.split('\\');m.forEach(a=>{if(x[a]){x=x[a]}else{error=1})
if(x==files | | error){return(0)}return(x)
}
var newObj={};if(数组的obj实例){newObj=[]}
var arr=[];var arr1=[];var newObj1=newObj
函数递归(obj,newObj,string){
Object.getOwnPropertyNames(obj).forEach((a,i)=>{const string1=string
常量x={[a]:Object.getOwnPropertyDescriptor(obj,a)}
if(对象的类型=对象”&&obj[a]!=null){
newObj[a]={};if(obj[a]数组实例){newObj[a]=[]}
如果(!arr.includes(obj[a])){
arr.push(obj[a]);if(string==“”){string+=a}else{string+=`\\\${a}}
arr1.push(字符串);递归(obj[a],newObj[a],字符串)
}
else{newObj[a]=stringToFile(arr1[arr.indexOf(obj[a])],newObj1)}
string=string1;返回;
}Object.defineProperties(newObj,x)
})
}递归(obj,newObj,“”);返回newObj
}
//示范
var myObj={a:1,b:2,c:{d:3,e:{f:4}}
myObj.f=myObj//使其循环以供演示
var clonedObj=克隆(myObj)
console.log(clonedObj==myObj)//false
console.log(myObj.f==clonedObj.f)//false
clonedObj.a++;clonedObj.c.d++//这些仅在克隆中添加
log([clonedObj.a,clonedObj.c.d])//2,4
log([myObj.a,myObj.c.d])//1,3
console.log(myObj);console.log(clonedObj)//查看您自己的全部差异
您说过您有一个对象数组:可能是{item}
发生了错误。如果item
是一个对象,那么React将不太喜欢它。我会尝试{JSON.stringify(item)}
,看看这是否会使错误消失。当我尝试时,我得到了这个错误:将循环结构转换为JSON-->从构造函数'FiberNode'正确的对象开始