vue.js - Vue + Axios 与 sessionStorage
问题描述
目标:最初在 Vue 视图中使用 Wordpress Rest API 通过 Axios 加载帖子一次,并且在访问 Vue 网站的会话期间仅加载一次。
当前结果:我目前成功获取结果并将它们设置在 sessionStorage 中。它们显示正确。我想知道/了解我是否正确地完成了这项工作,并以尽可能最好的方式优化了流程。我查阅了文档,我想我已经把它记下来了。
当前代码:
<script>
import Hero from "@/components/Hero.vue";
import axios from "axios";
export default {
name: "About",
components: {
Hero,
},
data: function() {
return {
eatery: [],
};
},
created() {
axios
.get("//localhost:81/wp-json/wp/v2/posts?_embed&per_page=5&categories=2")
.then((response) => {
sessionStorage.setItem("eatery", JSON.stringify(response.data));
})
.catch((error) => {
window.alert(error);
});
},
mounted() {
if (sessionStorage.getItem("eatery")) {
this.eatery = JSON.parse(sessionStorage.getItem("eatery"));
}
},
};
</script>
解决方案
在尝试加载它之前,我会检查它是否在存储中。在您的情况下,它看起来像这样:
export default {
name: "About",
components: {
Hero,
},
data: function() {
return {
eatery: [],
};
},
loadEatery() {
axios
.get("//localhost:81/wp-json/wp/v2/posts?_embed&per_page=5&categories=2")
.then((response) => {
sessionStorage.setItem("eatery", JSON.stringify(response.data));
return response.data;
})
.catch((error) => {
console.error(error); // for debugging maybe
});
},
mounted() {
if (sessionStorage.getItem("eatery")) {
this.eatery = JSON.parse(sessionStorage.getItem("eatery"));
} else {
loadEatery().then(data => this.eatery = data);
}
},
};
推荐阅读
- javascript - 检查页面是否通过 https 安全地提供
- sql - 日期列和当前日期之间的Datediff函数?
- sql-server - IONIC 4 从 SQLite 到 SQL 服务器的在线/离线同步
- php - 如何检查用户是否已存在于 MySQL 数据库中以及密码是否与存储的哈希密码匹配
- python - 如何从 Flask 提供 create-react-app?
- r - 如何使用 ggplot 在绘图中创建多个图层,其中每个图层将不同的过滤器应用于变量?
- java - 有没有办法忽略 SpringBoot bean 配置中的自定义注释?
- php - 如何在 WordPress 数据库中找到已删除或已删除的帖子?
- jenkins - 在执行期间访问 Jenkins 管道 WorkflowScript
- android - 在 Android 中解码和存储 JWT 以进行身份验证的最佳方法