尚硅谷Vue尚品汇项目-解决购物车刷新页面后数据渲染失败的问题

在Vue尚品汇购物车页面遇到刷新后数据渲染失败的问题,原因是页面渲染时数据未及时从服务器获取。解决方案包括:1) 在跳转前通过dispatch请求数据并存入sessionStorage,子组件中读取此数据;2) 使用v-if指令确保数据返回后再进行渲染,避免控制台报错和页面异常展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:我们在 ShopCart 购物车页面的 mounted / created 中写了 dispatch,向服务器请求了数据:

created() {
   
   
    this.$store.dispatch("getCartList")
}

当我们在刷新购物车页面时,created 钩子会重新向服务器发送请求获取数据,在网速慢的情况下,可能出现获取不到购物车列表的bug,这是由于数据还未获取到,页面已经渲染完毕导致的

控制台报错:cartInfoList 没有定义,且通过观察 Vue 开发者工具,我们可以看到:vuex 中开始没有 cartInfoList 数据,但过了一会就有了,再次印证了数据还未从服务器获取到,页面已经开始渲染

在这里插入图片描述

  • 解决方法1

在父组件 Detail 跳转路由前,就 dispatch 向服务器发请求获取数据,在保存到 Vuex 的同时,保存到 sessionStorage 中

在子组件 ShopCart 的 created / mounted 钩子中将 sessionStorage 中的数据获取到

// Vuex将数据保存到 state 和 sessionsStorage 中
// actions中:
async getCartList({
    
     commit }) {
   
   
    let result = await 
### 硅谷 Vue2 品汇项目资源汇总 #### 项目源码下载 对于硅谷 Vue2 品汇项目的源码,可以通过访问 Gitee 平台上的仓库来获取完整的项目文件。具体链接如下[^1]: - **Gitee 地址**: [https://gitee.com/HusePanghu/project-SP](https://gitee.com/HusePanghu/project-SP) #### 文档与教程 为了更好地理解和开发该项目,建议查阅官方文档以及相关技术博客中的详细说明。 - 官方 Vue.js 文档提供了关于框架的基础知识和技术细节,这对于理解如何构建和优化应用程序至关重要。 - 技术博客文章也包含了丰富的实践经验和技巧分享。例如,在 优快云 上有一篇详细的笔记介绍了此项目的实现过程[^5]。 #### 关键特性解析 ##### Less 文件支持 由于项目采用了 LESS 预处理器编写样式表,因此在编译过程中需要配置 Webpack 或其他工具链以确保能够正确加载并转换这些 `.less` 文件到标准 CSS 格式[^2]: ```javascript // webpack.config.js 中的部分配置项可能看起来像这样 module.exports = { module: { rules: [ { test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] } ] } }; ``` ##### 动态路由控制 通过向 `vue-router` 的路径定义添加元数据字段(如 `meta.show`),可以在全局范围内轻松管理特定视图组件的行为逻辑,比如决定页脚是否可见[^3][^4]: ```html <template> <div> <!-- ... --> <footer v-show="$route.meta.show"></footer> </div> </template> <script> export default { // ... } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值