【问题标题】:How to solve "Failed to resolve: component at App.vue"如何解决“无法解决:App.vue 中的组件”
【发布时间】:2021-09-10 10:00:40
【问题描述】:

我正在通过参考this video了解Vue3的组件。

本视频6点37分左右,导师创建Header.vue并编辑App.vue时,测试站点上显示了header。 我写了相同的代码,但得到一个错误并且没有显示任何内容。

任何帮助将不胜感激。

错误信息

[Vue warn]: Failed to resolve component: Header 
  at <App>
  runtime-core.esm-bundler.js?5c40:38

代码

[App.vue]

<template>
  <Header />
</template>

<script>
import Header from './components/Header.vue';

export default {
  setup() {
    return {
      Header
    }
  }
}
</script>

<style>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Fira Sans', sans-serif;
}
body {
  background: #EEE;
}
</style>

[Header.vue]

<template>
  <h1>Income Tracker</h1>
  <div class="total-income">¥0</div>
</template>

<script>
export default {
    
}
</script>

<style scoped>
header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 15px 30px;
  background-color: #313131;
  border-bottom: 5px solid #FFCE00;
}
header h1 {
  color: #EEE;
  font-size: 28px;
}
header .total-income {
  font-family: 'Fira Code', 'Fira Sans', sans-serif;
  background-color: #FFCE00;
  color: #FFF;
  font-size: 20px;
  font-weight: 900;
  padding: 5px 10px;
  min-width: 100px;
  text-align: center;
  border-radius: 8px;
  box-shadow: inset 0px 0px 6px rgba(0, 0, 0, 0.25);
  text-shadow: 0px 3px 3px rgba(0, 0, 0, 0.25);
}
</style>

【问题讨论】:

    标签: javascript vue.js vuejs3


    【解决方案1】:

    Header 组件未在App.vue 中正确注册。我相信您是从 setup() 尝试 local component registration,但目前不支持。

    使用components optionApp.vue中本地注册Header

    import Header from './components/Header.vue';
    
    export default {
      components: {
        Header
      },
    
      setup() {
        // DON'T DO THIS
        //return {
        //  Header
        //}
      }
    }
    

    demo

    【讨论】:

      【解决方案2】:

      您需要将子元素包裹在 Header 组件的单个父元素中。

      <template>
        <div>
            <h1>Income Tracker</h1>
            <div class="total-income">¥0</div>
         </div>
      </template>
      

      【讨论】:

      • 这只有在 Vue 2 中是必需的,但是 Vue 3 允许多个根节点。
      【解决方案3】:

      你需要在 App.vue 中包含你的 header 组件,试试这个

      <template>
        <Header />
      </template>
      
      <script>
      import Header from './components/Header.vue';
      
      export default {
          components: {
                  Header,
          },
      
      }
      </script>
      
      <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Fira Sans', sans-serif;
      }
      body {
        background: #EEE;
      }
      </style>
      

      【讨论】:

        猜你喜欢
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        • 1970-01-01
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多