首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React -导出同一文件中的多个类

React -导出同一文件中的多个类
EN

Stack Overflow用户
提问于 2019-11-30 13:24:52
回答 3查看 188关注 0票数 3

我正在做react中的一个项目,其中我有多个组件。我正在尝试用JSBin完成所有这些工作(笑..我知道)。但是我在导出多个类时遇到了问题。

代码语言:javascript
运行
复制
class Foo extends React.Component {
    constructor(props) {
        super(props);

        this.state = {

        }
    }

    render() {
        return (
            <div></div>
        );
    }
}


class Bar extends React.Component {
    constructor(props) {
        super(props);

        this.state = {

        }
    }

    render() {
        return (
            <div></div>
        );
    }
}

export class Foo{};
export class Bar{};

但是我得到了一个错误:

代码语言:javascript
运行
复制
  Parsing error: Identifier 'Foo' has already been declared
  92 | }
  93 | 
> 94 | export class Foo{};
     |              ^
  95 | export class Bar{};

所以我试着把它改成这样

代码语言:javascript
运行
复制
class Foo extends React.Component {...my code}
class Bar extends React.Component {...my code}

它可以编译,但我得到了一个运行时错误

代码语言:javascript
运行
复制
Error: Element type is invalid: expected a string (for built-in components) or a class/function       (for composite components) but got: object.

是否可以使用react在单个文件中导出多个类?

EN

回答 3

Stack Overflow用户

发布于 2019-11-30 13:33:05

这是因为您在底部重新声明了类,所以可以像下面这样导出您的类。

代码语言:javascript
运行
复制
export class Foo extends React.Component {
   // your code
}

export class Bar extends React.Component {
  // your code
}
票数 3
EN

Stack Overflow用户

发布于 2019-11-30 13:41:59

您可以像往常一样声明您的类,然后导出文件末尾的所有类,如下所示

代码语言:javascript
运行
复制
class Foo extends React.Component {
  constructor(props) {
    super(props);

    this.state = {};
  }

  render() {
    return <div></div>;
  }
}

class Bar extends React.Component {
  constructor(props) {
    super(props);

    this.state = {};
  }

  render() {
    return <div></div>;
  }
}

export { Foo, Bar };

或者,如果您愿意,也可以在声明类时将其导出。

代码语言:javascript
运行
复制
export class Foo extends React.Component {
  constructor(props) {
    super(props);

    this.state = {};
  }

  render() {
    return <div></div>;
  }
}

export class Bar extends React.Component {
  constructor(props) {
    super(props);

    this.state = {};
  }

  render() {
    return <div></div>;
  }
}

一般来说,建议每个文件只根据es-lint's rule导出一个组件。

票数 1
EN

Stack Overflow用户

发布于 2019-11-30 13:44:29

您还可以执行以下操作:

代码语言:javascript
运行
复制
export Foo;

export Bar;

而不是再次声明类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59113443

复制
相关文章

相似问题

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