【问题标题】:Export multiple wrapper functions in Javascript ES6在 Javascript ES6 中导出多个包装函数
【发布时间】:2016-11-02 21:39:38
【问题描述】:

我正在使用 react-komposer 用数据获取包装器包装 React 组件。

这是非常基本的,我想在 Meteor 中包装多个组件。但是我不知道导出模式是什么?

这就是我所拥有的(并给了我一个“意外令牌”错误 - 如果你理解这一点可能很明显!):

// myContainer.jsx
import Component1 from './Component1.jsx';
import Component2 from './Component2.jsx';

function composer(props, onData) {
  if (Meteor.subscribe('SingleTodoLists').ready()) {
    const todoList = todoLists.find({}).fetch();
    onData(null, { todoList });
  }
}

export composeWithTracker(composer, Loading)(Component1);
export composeWithTracker(composer, Loading)(Component2);

我想像这样导入它们:

import { Component1, Component2 } from './myContainer.jsx';

这个包装语法对我来说不是很清楚,所以我不确定要尝试什么。到目前为止,使用导出默认值和其他变体没有产生任何结果。

【问题讨论】:

    标签: javascript reactjs meteor ecmascript-6


    【解决方案1】:

    如果你不使用默认导出,你需要为你导出的东西命名:

    export const TrackedComponent1 = composeWithTracker(composer, Loading)(Component1);
    export const TrackedComponent2 = composeWithTracker(composer, Loading)(Component2);
    

    如果您使用默认导出,则可以省略名称,例如

    export default composeWithTracker(composer, Loading)(Component1);
    

    但是每个模块只能定义一个默认导出

    请参阅文档了解 ES6 导出语法:https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export

    更新:

    如果要保留原始导出名称:

    import _Component1 from './Component1.jsx';
    import _Component2 from './Component2.jsx';
    
    //... you code here
    
    export composeWithTracker(composer, Loading)(_Component1);
    export composeWithTracker(composer, Loading)(_Component2);
    

    因为 Component1.jsx 使用默认导出,所以当您导入它时,您可以根据需要重命名它(例如 _Component1、UntrackedComponent1、...)。如果没有默认导出,您可以改用 import { Component1 } as _Component1。

    【讨论】:

    • 太棒了!不是真的有必要,但是真的没有办法使用原来的名字Component1和Component2吗?我可以使用一个临时变量,然后在导出中重新分配 Component1 和 2,但这并不是很干净。
    • 在您的更新中,export composeWithTracker(composer, Loading)(_Component1); 不应该是 export const Component = composeWithTracker(composer, Loading)(_Component1);?
    猜你喜欢
    • 2020-06-30
    • 2023-03-10
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多