【发布时间】:2020-05-28 15:50:32
【问题描述】:
有这样一段代码:
<template>
<div class="wrapper">
</div>
</template>
<script>
import axios from 'axios';
export default{
created () {
console.log('222');
this.getTrackerIdData();
this.getTrackerData();
},
methods: {
getTrackerIdData () {
return axios.get("https://seo-gmbh.eu/couriertracker/json/couriertracker_api.php?action=tracking_new.create" , {
})
.then(response => {
this.$store.commit('tracker/setTrackingKeyId', response.data.data.tracking_new_key_id);
this.$store.commit('tracker/setQrCodeUrl', response.data.data.filename_qr_code_tracking_new);
})
.catch(function (error) {
console.log(error);
});
},
getTrackerData () {
setInterval(()=>myTimer(this), 60000);
function myTimer(th) {
return axios.get("https://seo-gmbh.eu/couriertracker/json/couriertracker_api.php?action=get_tracking_data&key_id=" + th.$store.state.tracker.trackingKeyId , {
})
.then(response => {
th.$store.commit('tracker/setTrackingServerData', response.data.data.tracking_data);
})
.catch(function (error) {
console.log(error);
});
}
},
}
}
</script>
在项目中启动这样的解决方案时,服务器端开发人员告诉我,至少其端的请求方法getTrackerIdData () 可以工作两次!
将代码 (console.log ('222');) 放在 created 生命周期(方法调用的地方)的钩子中后,我发现它在 firebug 中显示了两次:
问:
为什么会发生这种情况?从实现从服务器接收数据的角度来看,在这种情况下哪种方法是正确的?
附:如果在 mounted 钩子中调用了所有内容,那么代码可以工作,包括在服务器端,只有 1 次。
【问题讨论】:
-
看起来一个来自 SSR,另一个来自客户端渲染。在 SSR 期间不会调用
mounted挂钩。 -
我有另一个项目,根本没有任何中间件,也有同样的问题。
标签: javascript vue.js nuxt.js