Есть немного путаницы в том, что у вас есть.
В Api.js
вы монтируете приложение Vue без большого количества шаблона в элемент с идентификатором app
. И затем вы экспортируете Vue -подобный объект, который, если импортирован в другой компонент, можно использовать как <about />
. Однако мы не знаем, используете ли вы его где-либо еще.
В About.js
у вас, похоже, есть только <template>
, без контроллера или стиля. Возможно, вы хотели соединить их вместе, что выглядело бы примерно так (я не могу использовать SF C на SO, поэтому я просто объявил компонент встроенным, с Vue.component()
):
Vue.config.productionTip = false;
Vue.config.devtools = false;
Vue.component('About', {
template: `<div>
<h1>Covid-19 cases by Country</h1>
<section v-if="errored">
<p>
We're sorry, we're not able to retrieve this information at the moment,
please try back later
</p>
</section>
<section v-else>
<div v-if="loading">Loading...</div>
<div v-else v-for="(data, name) in info" :key="name" class="currency">
<h1>{{ name }}</h1>
<div v-for="(entry, key) in data" :key="key">{{entry}}</div>
</div>
</section>
</div>`,
data: () => ({
info: null,
loading: true,
errored: false
}),
mounted() {
axios
.get("https://pomber.github.io/covid19/timeseries.json")
.then(response => {
this.info = response.data;
// console.log(this.info);
})
.catch(error => {
// console.log(error);
this.errored = true;
})
.finally(() => (this.loading = false));
}
})
new Vue({
el: '#app'
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js"></script>
<div id="app">
<About/>
</div>
Если вы хотите выполнить загрузку данных в parent, вы должны передать требуемые реквизиты в <About />
по следующим строкам:
В App.js
шаблон:
<About :loading="loading"
:info="info"
:errored="errored"
/>
В About.js
с реквизитах:
props: {
loading: Boolean,
info: Object,
errored: Boolean
}
В этом суть. Но, в вашем случае, это может показаться ненужным осложнением.
В качестве дополнительного примечания, чтобы ускорить достижение вашей конечной цели, я позволил себе добавить еще несколько функций в ваш код: https://codesandbox.io/s/compassionate-dan-6z3zo
Надеюсь, вы найдете их полезными.