代码之家  ›  专栏  ›  技术社区  ›  Michael Lorton

重新导出会导致异步加载

  •  0
  • Michael Lorton  · 技术社区  · 4 年前

    我不知道问题是Vue、Webpack、Javascript、Node还是其他什么,但我有三个文件:

    components/MyComponent.vue 仅模板组件

    components/index.js :

    import ComponentA from './componentA';
    import ComponentB from './componentB';
    import MyComponent from './MyComponent';
    import ComponentD from './componentD';
     
    export { ComponentA, ComponentB, MyComponent, ComponentD };
    

    page/SomePage.vue :

    <template>
    {{ someValue() }}
      <my-component>
      </my-component>
    </template>
    <script>
    import { ComponentA, ComponentB, MyComponent, ComponentD } from '@/assets';
    export default {
      name: "SomePage",
      components: {
        MyComponent
      },
      computed: {
        someValue() {
           console.log({ ComponentA, ComponentB, MyComponent, ComponentD });
           return 1;
        }
      }
    }
    </script>
    

    你会想到的

    • 要在浏览器中呈现的模板
    • { ComponentA: (...), ComponentB: (...), MyComponent: (...), ComponentD: (...) } 要多次记录到控制台。

    会发生什么

    • 浏览器中不会呈现任何内容
    • 排队 { ComponentA: (...), ComponentB: (...), MyComponent: undefined, ComponentD: undefined } 就是控制台。
    • 然后是错误 Unknown custom element: <my-component> - did you register the component correctly? 已记录
    • {组件A:(…),成分B:(…),MyComponent:(…),成分:(…)} 多次记录到控制台。

    也就是说,导入发生了,但为时已晚,注册无法成功。绕过再出口

    import { ComponentA, ComponentB, ComponentD } from '@/assets';
    import MyComponent from '@/assetsMyComponent;
    

    解决了这个问题。

    用英国作家、评论家和政治家爱德华·乔治·布尔沃·利顿的话说,WTF?”

    0 回复  |  直到 4 年前