nuxt.js 进行项目重构-首页全部功能完成以及分类页的完成

6 篇文章 1 订阅

我们要计算scroll 的可滚动高度、但当页面加载时(特别是加载出来图片)可滚动高度会一直变化、从而导致页面频繁出发 事件 影响体验 

 

我们使用防抖函数来解决它

JS中防抖和节流_benlalagang的博客-CSDN博客_节流在指定时间内执行第一次还是最后一次https://blog.csdn.net/benlalagang/article/details/125580741?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166651246116800184176830%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166651246116800184176830&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-125580741-null-null.nonecase&utm_term=%E9%98%B2%E6%8A%96&spm=1018.2226.3001.4450通过 mixin 混入语法 使得防抖工具函数 可以在多个页面使用

在页面中引入使用:

mixins:[goodsimglisten],

static/mixin.js

function debounde(func,delay){
  //防止多次refresh 多次抖动
  //函数名字 传入参数和延迟时间
  let timer = null  //timer来记录有没有定时器
  return function (...args) {// args 泛指参数
    if (timer) clearTimeout(timer) //如果有之前的就清除它 再执行新的
    timer = setTimeout(()=>{
      func.apply(this,args)
    },delay)
  }
}


export  const goodsimglisten = {
  mounted(){
    const refresh = debounde(this.$refs.scroll.refresh,100)
    this.goodsimglisten=()=>{
      refresh()
    }
    this.$bus.$on('goodsimgload',this.goodsimglisten)
  },
  data(){
    return{
      goodsimglisten:null
    }
  }
}

 分类页

在router.js 路由表中配置好组件和路径

分类页整体页面布局 比较简单 头部navtop  左边导航按钮   右边展示区

头部还是通用组件 navTop

左边按钮 和右边内容列表 都外包一层 scroll 组件

样式一定要给上高度 才能根据计算出 超乎距离的滚动
.cbtn-scroll{
  background: #f5f5f5;
  height:calc(100vh - 49px);
  overflow: hidden;
  width: 28%;
  float: left;
}

.con-scroll{
  background: #fff;
  height:calc(100vh - 49px);
  overflow: hidden;
  width: 72%;
  float: right;
  box-sizing: border-box;
  padding: 0px 12px;
}

 联动切换效果和首页 切换商品分类一致

都是子组件改变样式 发射事件 传输索引值 父组件根据 索引值 改变右侧的数据展示

子组件根据索引动态改变样式 并发射自定义事件出去:并且切换时滚动距离切换到最顶部

bianse(index) {
  this.currentIndex=index;
  this.$emit('clickclass',index)//
}

父组件 根据索引值匹配数据

clickclass(index){
  switch (index) {
    case 0:
      this.classe="guanli"
      break
    case 1:
      this.classe="fagui"
      break
    case 2:
      this.classe="jingji"
      break
    case 3:
      this.classe="jianzhu"
      break
    case 4:
      this.classe="shizheng"
      break
    case 5:
      this.classe="jidian"
      break
    case 6:
      this.classe="gonglu"
      break
    case 7:
      this.classe="shuili"
      break
  }
  this.$refs.conscroll.scrollTo(0,0,0)
},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Nuxt.js中使用vue-seamless-scroll,首先需要在plugins目录下创建一个vue-seamless-scroll.js文件,并在文件中导入Vue和SeamlessScroll组件,然后使用Vue.use(SeamlessScroll)进行注册。 接下来,在nuxt.config.js文件中的plugins配置项中添加如下内容: ```javascript plugins: [ '@/plugins/element-ui', '@/plugins/axios', { src: '@/plugins/vue-seamless-scroll', ssr: false }, ] ``` 这样就可以将vue-seamless-scroll插件引入到Nuxt.js项目中了。 然后,在需要使用滚动组件的文件中,使用`<vue-seamless-scroll>`标签,并传入相应的数据和类名等参数。例如: ```html <vue-seamless-scroll :data="runningData" :class-option="scrollOption" class="scroll-container"> <div class="flex-row" v-for="item in runningData" :key="item.id"> <span class="row-1 row-nomal">{{ item.mbShowName }}</span> <span class="row-2 row-nomal">{{ item.mbShowVal }}</span> <span class="row-3 row-nomal">{{ item.updateTime | dateFilter }}</span> </div> </vue-seamless-scroll> ``` 这样就可以在Nuxt.js中使用vue-seamless-scroll组件了。 如果你在公司的基于Nuxt.js项目中使用滚动组件后刷新面出现"window is not defined"的错误,可能是因为滚动组件依赖于浏览器环境,而在服务器端渲染时无法访问到window对象。解决这个问题可以将ssr选项设置为false,如前面的配置所示。这样就可以避免在服务器端渲染时出现该错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [在 Nuxt中使用滚动组件 vue-seamless-scroll](https://blog.csdn.net/weixin_44769310/article/details/116144924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值