Vue 3 导入/解决组件问题

问题描述 投票:0回答:3

您好,Vue 新手,正在通过教程学习。我创建了一个组件 Header.vue 并尝试将其导入到 App.vue。 这是结构: 代码结构

这是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>
  <div>
    <h1>Income Tracker</h1>
    <div class="total-income">$0</div>
  </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>

我从 App.vue 获取样式,但组件无法解析。在控制台中我收到此错误: 错误信息

我尝试过的是堆栈溢出和基于错误消息文本的谷歌搜索。

要么是我搜索不正确,要么是我目前没有足够的经验来识别导致此问题的问题。

非常感谢有关如何解决此问题的教育。

javascript vue.js components
3个回答
3
投票

纯Vue

您需要在

components
选项中注册组件。

export default {
  components: {
    Header,
  },
};

请参阅文档

请注意,在 JavaScript 对象中包含无值条目(例如

Header
)是
Header: Header
的 ES6 语法。

script setup

随着 Vue 3 多年来的成熟,使用 Options API 的理由越来越少(存在或保持相关的 Vue 2 代码越来越少)。由于不需要选项 API,

script setup
已经占据了主导地位,因为它的样板代码较少。使用
script setup
时,只需导入组件即可。

<script setup>
import Header from "./components/Header.vue";
</script>

0
投票

你需要使用这样的组件

<template>
  <header />
</template>

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

export default {
    components: {
        "header": Header
    },
  setup() {
    return {
      Header,
    };
  },
};
</script>

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

0
投票

在 Header.vue 中,将 div 标签替换为 header 标签,因为您在 CSS 中设置 header 标签的样式,而不是 div 标签。

<template>
  <header>
    <h1>Income Tracker</h1>
    <div class="total-income">$0</div>
  </header>
</template>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.