首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入和导出es6类

导入和导出es6类
EN

Stack Overflow用户
提问于 2017-07-28 16:26:09
回答 2查看 189关注 0票数 0

我想要创建一个ES6类,它从文件中读取数据,只返回文件的内容,所以我创建了一个名为FileReader的类,它有一个构造函数filePath,并有一个名为getFileContent的方法。

代码语言:javascript
复制
import fs from 'fs';
import path from 'path';

export class FileReader {

constructor(filePath) {
    this.filePath = filePath;
    fs.readFile(filePath, (err, data) => {
        if (err) {
            console.log(err);
        }

        this.fileContent = data;
    });
}

getFileContent(separator, columns) {
    console.log(this.fileContent);
}

}

我有一个名为OrderList的react组件,我希望在componentDidMount方法中使用FileReader来读取文件的内容

代码语言:javascript
复制
import React from 'react';
import {FileReader} from '../Utils/FileReader';

class OrdersList extends React.Component {

    constructor(props, context) {
        super(props, context);
    }

    componentDidMount() {
        FileReader reader = new FileReader('');
        reader.getFileContent(',' , []);
    }


    render() {

    }
}


export default OrdersList;

问题是我得到了一个错误Unexpected token reader,那么这种方法有什么问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-28 16:30:09

将这一行:FileReader reader = new FileReader('');改为const reader = new FileReader('');

票数 4
EN

Stack Overflow用户

发布于 2017-07-28 16:30:59

代码中有两个问题:

  1. 在构造函数中读取文件内容,在大多数情况下,fileContent将是未定义的,因为fs.readFile是异步函数。
  2. 您正在创建一个没有文件路径的阅读器:FileReader reader = new FileReader('');

要解决所描述的问题,您应该移动类函数中读取文件的逻辑,并使用回调或承诺:

代码语言:javascript
复制
class OrdersList extends React.Component {
  constructor(filePath) {
    this.filePath = filePath;
 }

 getFileContent(separator, columns, cb) {
   fs.readFile(this.filePath, (err, data) => {
      if (err) {
        console.log(err);
      }
      cb(err, data) ;
    });
  }
}

在OrdersList中,您应该使用真正的文件名和回调函数来读取文件内容:

代码语言:javascript
复制
class OrdersList extends React.Component {
    constructor(props, context) {
        super(props, context);
    }

    componentDidMount() {
        let reader = new FileReader(realFilePath);
        reader.getFileContent(',' , [], (err, content) => {
          // TODO: file content in content var
        });
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45378324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档