arrays - React 将数据推送到数组对象中
问题描述
如何将 importFile.js 中的数据导入 dataTable.js?
https://github.com/Romson/CSV-file-uploader/blob/master/src/components/importFile.js https://github.com/Romson/CSV-file-uploader/blob/master/src/components /dataTable.js
尝试使用此函数将导入数据中的嵌套数组从 importFile.js 更改为数组对象。
const newArray = [data].map(
([firstName, lastName, issueCount, dateOfBirth]) => ({
firstName,
lastName,
issueCount,
dateOfBirth
})
);
然后使用以下命令推入 dataTable.js:
data.rows.push(newArray);
在 React 中执行此操作的正确方法是什么?
预期结果是让导入的数据显示在此表中:
解决方案
您要做的是使 DataTable 组件成为 Reader 组件的子组件。您需要 Reader 组件中的对象数组作为 DataTable 组件中数据表的 rows 属性。正如你所说,你是一个初学者,所以最好从反应钩子开始,因为它很容易。
阅读器组件
import React, {useState} from "react";
import CSVReader from "react-csv-reader";
import DatatablePage from "./dataTable";
import "../index.css";
const Reader = () => {
const [data, setData] = useState([]);
return (
<div className="container">
<CSVReader
cssClass="react-csv-input"
label="Upload a new CSV file"
onFileLoaded={(data) => setData(data)}
/>
<DatatablePage uploadedData={data} />
</div>
);
}
export default Reader;
数据表页面组件
import React from "react";
import { MDBDataTable } from "mdbreact";
const DatatablePage = ({uploadedData}) => {
const data = {
columns: [
{
label: "First Name",
field: "name",
sort: "asc",
width: 150
},
{
label: "Last Name",
field: "surname",
sort: "asc",
width: 270
},
{
label: "Issue count",
field: "issuecount",
sort: "asc",
width: 200
},
{
label: "Date of birth",
field: "dateofbirth",
sort: "asc",
width: 100
}
],
rows: []
};
// we append the passed props in the rows. read about spread operator if unaware of it.
const datatableProps = {...data, rows: uploadedData};
return <MDBDataTable striped bordered hover uploadedData={uploadedData} data={datatableProps} />;
};
export default DatatablePage;
我们正在使用react hooks来创建一个名为 data 的状态变量和一个 setter。然后我们将此状态变量传递给可以渲染它的子组件。
推荐阅读
- css - 如何在反应中添加内联动画?
- security - 资产文件夹的权限以避免 Javascript 攻击?YII 和 Ubuntu
- javascript - Gantry 5 Extended Style menu dropdown onclick to hover
- swift - 如何访问 HashedAuthenticationCode 的代码(作为字符串)?
- aem - 如何将 CSS 样式添加到 AEM 中的 cq:dialogue
- google-cloud-platform - 在两个谷歌云项目之间复制数据以及以数据为中心的环境中 DEV 和 PROD 环境的最佳实践
- ruby - 无法使用 Ruby 2.6.5 版本启动 Ruby on Rails 服务器
- ruby - 在多次 map/filter 调用后获取初始值
- file - BusyBox 帮助写入文件
- css - CSS中的内联SVG做背景图像