[英]How to read from a csv file in a React app?
我使用 create-react-app 的打字稿版本构建了一个超级基本的 React 应用程序。
在我的反应应用程序中,我想显示我添加的项目的csv
文件中的数据。 想象一下src
下的data.csv
文件。
单击按钮时,我想触发一个函数来读取这个文件,使用一些数据进行计算等,然后打印结果。 实现这一目标的最佳方法是什么? 我知道如何在 React 中点击按钮时触发一个函数,但不知道在该函数中做什么来读取文件和控制台记录要启动的数据。
重要- 我的项目中已经有了文件路径和文件,不需要用户输入来查找文件
我尝试在函数中使用 fs 之类的东西,但那些会抛出错误,我学会了它,因为它们是本机模块,不能在浏览器上使用。 那么什么可以用于浏览器呢?
fs
仅适用于服务器,不适用于客户端。 浏览器没有(一般)访问文件系统的权限。
有几种选择:
将 .csv 文件放入public
文件夹,然后您可以像这样加载它:
function App() {
const [ text, setText ] = useState();
const load = function(){
fetch( './csvInPublicFolder.csv' )
.then( response => response.text() )
.then( responseText => {
setText( responseText );
})
};
return (
<div>
<button onClick={ load }>load</button>
<h2>text:</h2>
<pre>{ text }</pre>
</div>
);
}
或者,如果文件必须在src
文件夹中,
yarn add file-loader --dev
webpack.config.js
:module.exports = {
module: {
rules: [
{
test: /\.csv$/,
use: [
{
loader: 'file-loader',
},
],
},
],
},
};
import csvFilePath from './csvInSrcFolder.csv';
import { useState } from 'react';
function App() {
const [ text, setText ] = useState();
const load = function(){
fetch( csvFilePath )
.then( response => response.text() )
.then( responseText => {
setText( responseText );
});
};
return (
<div>
<button onClick={ load }>load</button>
<h2>text:</h2>
<pre>{ text }</pre>
</div>
);
}
或者您可以创建自定义 server.js 并向服务器发送请求。 在服务器上,您可以访问文件系统 ( fs
)。
如果您不想自己解析文件内容,可以使用现有的 csv 解析器。 有人推荐papaparse (我没有自己的经验,哪些是好的)
import * as Papa from 'papaparse';
// ...
fetch( csvFilePath )
.then( response => response.text() )
.then( responseText => {
// -- parse csv
var data = Papa.parse(responseText);
console.log('data:', data);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.