我正在使用 react-komposer 来使用数据获取包装器来包装 React 组件。
这是非常基础的,我想在 Meteor 中包装多个组件。但是我不知道导出模式是什么?
这是我所拥有的(并给我一个“意外 token ”错误 - 如果您理解得很好,这可能很明显!):
// 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';
这个包装语法对我来说不是很清楚,所以我不确定要尝试什么。到目前为止,使用导出默认值和其他变体没有产生任何结果。
最佳答案
如果你不使用默认导出,你需要命名你导出的东西:
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
。
关于javascript - 在 Javascript ES6 中导出多个包装函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377209/