javascript - 在某些页面中重复调用 API 端点以调度 Vuex 操作
问题描述
我使用 NuxtJs 框架。我创建了一个动作来调用端点并将它的响应设置为存储。
我想在我的一些仪表板页面中每 30 秒调用一次端点。如果用户导航到不需要 API 调用的页面,我想禁用 API 调用。
在我的第一次尝试中,我习惯于在所有需要 API 调用数据的页面中实现 Interval(这是可行的,但我不想在我的许多需要 API 调用数据的组件中复制这些代码):
data: () => {
return {
getting: null,
};
},
computed: {
...mapActions({
myAction: "***name-of-action***",
}),
},
created() {
this.getData();
},
beforeDestroy() {
clearInterval(this.getting);
},
methods: {
getData() {
this.getting = setInterval(() => {
this.myAction()
}, 30000);
},
},
在我的第一次尝试中,我使用 NuxtJs 中间件和 JavaScript 间隔来调度操作,但是当我导航到不需要 API 调用的页面时,它仍然调用 API(因为 JavaScript 间隔需要明确,但 Nuxt 中间件不需要' t 有权访问组件生命周期组件销毁以清除间隔)
export default (props) => {
setInterval(() => {
props.store.dispatch("***name-of-action***");
}, 3000);
};
我想为这个问题做最佳实践。
解决方案
为了解决这个问题,我使用了 mixin,它成为了一个很好的解决方案。
我创建一个这样的mixin:
// intervalMixin.js
export default {
data: () => {
return {
getting: null,
};
},
computed: {
...mapActions({
myAction: "***name-of-action***",
}),
},
created() {
this.getData();
},
beforeDestroy() {
clearInterval(this.getting);
},
methods: {
getData() {
this.getting = setInterval(() => {
this.myAction()
}, 30000);
},
},
}
所以我将这个 mixin 添加到我想要的每个组件中,如下所示:
mixins: [intervalMixin],
推荐阅读
- caching - aws cloudformation CachePolicy 通用错误
- python - Keras model.evaluate 使用 ImageDataGenerator 时的准确率停留在 50%
- javascript - Discord.js v12 Ban 命令有效但不禁止成员
- javascript - 为什么我的节点包管理器在安装它并运行 pacakage.JSON 文件后给我错误?
- javascript - 源地图未在 Google Chrome 中激活
- python - 彩色图像上卷积滤波器后输出张量的形状
- opencv - 如何检测连续图像
- ios - 如何在 Swift 中绘制视图之前从服务器加载数据
- python - 如何使用python将选定部分的坐标存储为列表?
- java - 在 Spring Data 中拦截存储库方法调用,动态优化查询