【发布时间】:2020-06-09 12:35:42
【问题描述】:
我目前正在使用 React 上传 CSV 文件并将数据转换为数组,以便我可以访问电话号码。实际上,我几乎完全可以使用它,只有一个问题:我无法弄清楚如何将数组正确存储在全局级别的变量 (dataDump) 中。它将它存储在另一个数组中。
Here's a picture of my console so you can see what I mean.
如果我使用 dataDump[0](如 handleClick 的函数所示),我可以访问 dataDump 的内容,但这不适用于全局变量。我需要能够将数组的值发送到其他组件/文件,所以我认为不必像那样调用它会起作用。可能是我在脑海中过于复杂了,答案非常简单,但在过去的 2-3 周里,我从头开始学习 React、Twilio、Mongodb 等,所以我的大脑不合作。
我将不胜感激!谢谢!代码如下。 (注意这是一个导入到 App 页面的组件。)
import React from "react";
import CSVReader from "react-csv-reader";
var dataDump = [];
console.log(dataDump);
const papaparseOptions = {
header: true,
dynamicTyping: true,
skipEmptyLines: true,
transformHeader: header => header.toLowerCase().replace(/\W/g, "_"),
complete: function(results) {
dataDump.push(results.data);
console.log(dataDump);
var rows = results.data;
let numbers = rows.map(a => a.phone_number); //make the results ONLY the phone numbers
// console.log(numbers);
document.getElementById("data2").innerHTML=numbers; //display the phone numbers
}
};
class Import extends React.Component {
constructor(props) {
super(props);
this.state = {data:[]};
this.handleClick = this.handleClick.bind(this);
}
handleForce = data => {
// console.log(data.length);
console.log(data);
this.setState({data: data});
};
handleClick = () => {
console.log("success");
console.log(this.state.data);
console.log("Next is Numbies:");
let numbies = dataDump[0].map(a => a.phone_number);
console.log(numbies);
document.getElementById("data").innerHTML=numbies;
}
render() {
return (
<div className="container">
<CSVReader
className="csv-input"
label="Select CSV file to import"
onFileLoaded={this.handleForce}
parserOptions={papaparseOptions}
/>
<div>
</div>
<button onClick={this.handleClick.bind(this)}>
Test
</button>
<div id="data" />
<div id="data2" />
<div id="data3">
</div>
</div>
);
}
}
export default Import;
// export default DataController;
【问题讨论】:
-
如果你正在寻找“application_level_state”(又名全局状态),我强烈推荐
redux for react:) -
这能回答你的问题吗? When should I add Redux to a React app?
标签: javascript arrays reactjs