在我的Typescript代码中插入一个for循环:
var rows = [
{
id: '1',
category: 'Snow',
value: 'Jon',
cheapSource: '35',
cheapPrice: '35',
amazonSource: '233'
}
];
var newRow = {
id: productName,
category: category,
value: _value.toString(),
cheapSource: merchantName,
cheapPrice: lowPrice,
amazonSource: suppData[k][2]
};
rows.push(...newRow);
export default function DataTable() {
const { user } = useUser();
return (
<div>
{user ? (
<div
style={{
height: 400,
width: '75%',
backgroundColor: 'white',
marginLeft: 'auto',
marginRight: 'auto',
marginTop: '50px',
marginBottom: '50px'
}}
>
<DataGrid
rows={rows}
columns={columns}
pageSize={5}
rowsPerPageOptions={[5]}
checkboxSelection
onRowClick={get5CatDataNoStockCheck}
/>
</div>
) : (
<div>
<SignIn />
</div>
)}
</div>
);
}
我面临的问题是,它总是推动同一行,即使我改变的是值刚刚之前?
PS:一个简单的数组。push不可用,因为数组不是“可扩展的”
2条答案
按热度按时间qgzx9mmu1#
这一行一开始就不起作用。这是要完成什么?-为什么要扩展
newRow
对象。对于您提供的代码,
rows.push()
将工作(前提是您尝试推送的元素具有正确的类型-毕竟您使用了typescript,因此通过声明您的数组,它将推断出类型。(类似于{id: string, category: string, ...}[]
,因此如果您现在尝试推送不完全属于该类型的元素,typescript将不允许您。但是在你给我们看的代码中,没有理由
push()
不能工作。从我所要处理的内容来看,我会说很有可能你试图推送错误的类型。(这会导致typesript抛出错误)--当然,rows.push(...newRow);
会抛出错误,而不管typesript是什么(它就是不工作)wj8zmpe12#
如果你不了解自己创建的数组的结构,让我们看看rows数组的结构,这是一个对象数组:
创建一个newRow变量,它是一个对象。如果你要添加它,就不需要使用spread操作符。你可以重新声明数组,或者直接推入rows数组。
方式1 -重新声明数组
方法2-推入行数组