【问题标题】:Can I import one method from object.freeze我可以从 object.freeze 导入一种方法吗
【发布时间】:2019-01-22 02:34:09
【问题描述】:
export default Object.freeze({
  fetchReseller: ({ offset, limit }) => ({
     type: FETCH_RESELLER,
     payload: { offset, limit },
  }),
// deleteReseller: ... etc
})

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

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

没用

【问题讨论】:

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


    【解决方案1】:

    这是不可能的,因为您正在导出整个对象。

    导入语法如

    import { fetchReseller } from './actions/Reseller'
    

    在有命名导出的情况下工作:

    export const fetchReseller = ...
    

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

    【讨论】:

      【解决方案2】:
      export const fetchReseller = arg=> ({ type: "TYPE", payload:{arg}  });
      
      export default Object.freeze({
          fetchReseller,
         // deleteReseller: ... etc
      });
      

      【讨论】:

        【解决方案3】:

        除非您将代码重构为@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 = () => {}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 2015-12-17
          相关资源
          最近更新 更多