Javascript 当我加载一个组件时,我能让我的代码执行一次脚本吗?
我正在用Vuejs制作一个web应用程序,我正在使用带有单文件组件的vue路由器 当用户输入路由时,将调用组件上创建的函数。在创建的函数中,我从另一个站点加载数据,但我希望此代码只执行一次,因此它不会在每次访问页面时加载。有什么办法吗 这是我现在的代码:Javascript 当我加载一个组件时,我能让我的代码执行一次脚本吗?,javascript,vue.js,vue-router,Javascript,Vue.js,Vue Router,我正在用Vuejs制作一个web应用程序,我正在使用带有单文件组件的vue路由器 当用户输入路由时,将调用组件上创建的函数。在创建的函数中,我从另一个站点加载数据,但我希望此代码只执行一次,因此它不会在每次访问页面时加载。有什么办法吗 这是我现在的代码: <template> <div> <h1>Arrangementer</h1> <br> <div class="even
<template>
<div>
<h1>Arrangementer</h1>
<br>
<div class="events">
<Event v-for="event in events"
:key="event.id"
:title="event.title"
:desc="event.desc"
:position="event.position"
:start_date="event.start_date"
:end_date="event.end_date"
:registration="event.registration"
:img_url="event.img_url"
:body="event.body" />
</div>
</div>
</template>
<script>
import Event from '../components/Event';
import axios from 'axios';
import rollbar from '../../server/logging';
export default {
components: {
Event
},
data: () => {
return {
events: {}
}
},
created() {
const vm = this;
axios.get('/api/events').then((response) => {
vm.events = response.data;
}).catch((e) => {
rollbar.error(e);
vm.$notify({
group: "varsel",
title: "En feil oppsto",
text: "Jeg klarte ikke å hente info :("
});
})
}
}
</script>
可以在父组件处加载数据,然后将其传递给组件。我不知道如何启动组件,但可以先加载数据,然后通过传递加载的数据来启动子组件。您还可以在父组件和子组件之间创建中间件组件,以便永久保存数据。您可以在创建父级或使用延迟加载时创建它。另一种解决方案(实际上不推荐)是不删除组件,而只是隐藏它,这对应用程序的性能非常不利。您还需要记住,所有这些解决方案都会导致将加载的数据始终保留在内存中,因此,除非您添加某种垃圾收集器从内存中删除这些数据(例如,在n次之后),否则内存效率不高。有多种方法可以做到这一点。您可以尝试将API响应保存在会话存储中,这样它将一直保存到您关闭浏览器窗口为止 安排人 从../components/Event导入事件; 从axios导入axios; 从.././服务器/日志导入滚动条; 导出默认值{ 组成部分:{ 事件 }, 数据:=>{ 返回{ 事件:{} }; }, 方法:{ 异步getApi{ 试一试{ const events=await axios.get/api/events; sessionStorage.setItemapi_事件,事件; 返回事件; }犯错误{ rollbar.errore; 这是$notify{ 小组:瓦塞尔, 标题:En feil oppsto, 文本:Jeg klarte ikkeåhente信息: }; } } }, 创造{ const events=sessionStorage.getItemapi_events; 如果事件{ 这个事件=事件; }否则{ 这是getApi; } } };
非常感谢。这比我想的更有效!:太好了!很高兴听到这个!