我可以从object.freeze导入一种方法吗

时间:2018-08-15 07:54:53

标签: javascript reactjs object ecmascript-6 react-redux

export default Object.freeze({
  fetchReseller: ({ offset, limit }) => ({
     type: FETCH_RESELLER,
     payload: { offset, limit },
  }),
// deleteReseller: ... etc
})

如何仅导入一种方法,例如fetchReseller, 我不需要此Object.freeze中的所有内容。

  

从'./actions/Reseller'导入{fetchReseller}

没有工作

3 个答案:

答案 0 :(得分:0)

不可能,因为您要导出整个对象。

导入类似

的语法
import { fetchReseller } from './actions/Reseller'

在命名导出的情况下有效:

export const fetchReseller = ...

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export#Description

答案 1 :(得分:0)

export const fetchReseller = arg=> ({ type: "TYPE", payload:{arg}  });

export default Object.freeze({
    fetchReseller,
   // deleteReseller: ... etc
});

答案 2 :(得分:0)

除非您将代码重构为建议的@hsz模式,否则我认为您不能这样做。如果您不想重构,可以使用解构技术:

import theWholeObject from './actions/Reseller';

const { fetchReseller } = theWholeObject;

然后您可以使用fetchReseller()函数。

优势: Babel将从该对象中提取该函数并将其存储在const中。如果您使用的是webpack(特别是webpack v4),则名为TreeShaking (or uglify)的进程将从模块中删除其余对象。因此,捆绑的文件将仅具有fetchReseller函数,因此文件大小根本不会增加。 您可以在大括号中用逗号分隔多个方法,以导入多个方法。

const { fetchReseller, anotherMethod } = theWholeObject;

请记住,@ hsz建议的模式是行业标准。也就是说,您应该分别一个一个地导出操作。

export const methodOne = () => {}

export const methodTwo = () => {}

export const methodThree = () => {}