如何使用React读取CSV的内容并将其导出为常量?

ruoxqz4g  于 2023-04-27  发布在  React
关注(0)|答案(1)|浏览(125)

下面是我的Products.js文件:

import { useState, useEffect } from 'react';
import Papa from 'papaparse';

import csvFile from './products.csv'

  let records = [];

  Papa.parse(csvFile, {
    header: true,
    download: true,
    complete: function (input) {
      records = input.data;
      console.log(records);      
    },    
  });
  
export const products= records

export const products1=[
  {
    "id": "1",
    "name": "name 1",
  },
  {
    "id": "2",
    "name": "name2",
  },
  {
    "id": "3",
    "name": "name3",
  }, 
]

它是从这个SampleData.js文件导入的:

import React from 'react';
import { products } from '../data/Products'
import { filters } from '../data/Filters'
import { brands } from '../data/Brands'

export default function withSampleData(WrappedComponent) {
    class HOC extends React.Component {

        render() {
            return <WrappedComponent {...this.props} products={products} filters={filters} brands={brands} />
        }
    }
    return HOC;
}

在Products.js文件中,当将其重命名为product时,虚拟数据(products1)工作良好。但是我需要的那个(products = records)最终为空。Papa解析函数中的日志显示了一个完整的对象数组。
我怀疑有一些异步问题,但我不知道如何解决。
products.csv文件存储在本地。

pftdvrlh

pftdvrlh1#

你可以尝试你的内容阅读逻辑如下

const parseCSV = async (csvFile: string, size: number) => {
    const data = [];
    const errors = [];
    const meta = [];
    let count = 0;

    Papa.parse(csvFile, {
      complete: async () => {
        // if you want you can validate file content here 
        
        console.log(data);
       
      },
      header: true,
      download: true,
      skipEmptyLines: true,
      step: (row) => {
        data.push({ id: count, ...row.data });
        count++;
      },
    });
  };

相关问题