尚硅谷Vue电商项目笔记4-Detail滚动行为放大镜以及change事件

尚硅谷Vue电商项目笔记4-Detail滚动行为放大镜以及change事件

教程地址

静态页面的实现

基本展示

  1. 点击商品名称和图片会跳转到详情页
  2. 直接使用提供的Detail,是一个路由组件所以要放到pages目录中,并且在router下进行路由注册
    • 引入路由
    • 注册路由
    • 跳转到那个产品的详情,需要传递一个商品id参数,这样才知道查看的是那个商品,所以在注册路由的时候要使用params参数占位符
  3. 使用router-link标签代替Search页面的a标签进行路由的跳转

路由的配置:

{
   
   
  name:'detail',
  // 路由的配置
  path:'/detail/:goodsId',
  component:Detail
}

替换原来的a标签,并且传递商品id:

<div class="p-img">
  <!-- 字符串写法,如果router-link中有target="_blank"属性则也会在当前页面中打开,没什么奇怪的,因为router-link最终会被转换为a标签 -->
  <router-link :to="'/detail/'+goods.id"><img :src="goods.defaultImg" /></router-link>
</div>

路由的模块化

  1. 在router目录中创建routes.js文件,在该文件中引入路由并且注册路由
  2. 将包含路由对象的数组放在该文件中,并且暴露出去
  3. 原本的路由对象只需要引入暴露的路由文件即可
import routes from './routes'
// 模块化后的
export default new VueRouter({
   
   
  routes:routes
})

路由的滚动行为

点击跳转到详情页,滚动条会出现在最下方,我这里如果打开控制台会出现在最下方
可以通过创建VueRouter的时候给配置对象增加一个参数
滚动行为来控制:官方文档
问题:我这里加了好像没有效果,如果正常跳转默认就是在top,打开控制台添加了之后也不是在最上面

export default new VueRouter({
   
   
  routes:routes,
  scrollBehavior(to, from, savedPosition) {
   
   
    // 始终滚动到顶部
    return {
   
    x:0,y:0 }
    // return {top:0}
  },
})

数据的动态展示

获取数据

  1. 写请求接口函数
  2. 写vuex,查看返回的数据格式,对于复杂的数据格式使用getters简化获取
  3. 在Detail中发送请求将请求结果存储到vuex中

小窍门:通过路由传递过来的参数,为了方便使用,可以在data中定义参数数据,在beforeMount钩子函数中给其赋值,这样就可以直接使用了,或者可以定义计算属性

请求接口函数:

// 获取详情页信息的接口请求函数
export const reqDetailInfo= (skuId)=>{
   
   
  return request({
   
   
    url:'/item/'+skuId,
    method:"get"
  })
}

vuex代码:

import {
   
   reqDetailInfo} from '@/api'
const state = {
   
   
  detailInfo: {
   
   }
}
const mutations = {
   
   
  RECEIVE_DETAILINFO(state, detailInfo) {
   
   
    state.detailInfo = detailInfo
  }
}
const actions = {
   
   
  async getDetailInfo({
    
     commit }, skuId) {
   
   
    const result = await reqDetailInfo(skuId)
    if (result.code === 200) {
   
   
      commit('RECEIVE_DETAILINFO', result.data)
    }
  }
}
const getters = {
   
   
  // 复杂的数据简化获取方式,并且需要注意,如果没有获取到数据,则给定一个原本的空的数据类型,防止发生错误
  categoryView(state){
   
   
    return state.detailInfo.categoryView || {
   
   }
  },
  skuInfo(state){
   
   
    return state.detailInfo.skuInfo || {
   
   }
  },
  spuSaleAttrList
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值