当前位置: 首页 > news >正文

手机做任务佣金的网站十大免费货源网站免费版本

手机做任务佣金的网站,十大免费货源网站免费版本,给网站做h5缓存机制,郑州网站建设设计目录 1. Suspense标签 2.发布订阅者模式 3.pinia的使用 4.在请求过来的数据添数据 5.设置token和取token 6. 实现触底加载 7.导航守卫判断登录状态。 1. Suspense标签 Suspense主要用于用于处理异步组件加载和数据获取。,使用这个标签可以允许你在组件等待数…

目录

1. Suspense标签

2.发布订阅者模式

3.pinia的使用

4.在请求过来的数据添数据

5.设置token和取token

6. 实现触底加载

7.导航守卫判断登录状态。


1. Suspense标签

Suspense主要用于用于处理异步组件加载和数据获取。,使用这个标签可以允许你在组件等待数据或资源加载时显示一个占位符(通常是加载指示器),并在数据准备好后显示实际内容。这对用户体验来说非常重要,因为可以避免在数据加载过程中用户看到空白页面或不完整的内容。一般当我们请求数据都会用到async和await,此时就可以在app.vue页面中用 <Suspense> </Suspense>包裹住页面占位符  <RouterView></RouterView>进行使用。

  <Suspense><RouterView></RouterView></Suspense>

2.发布订阅者模式

发布订阅者模式中得先触发发布的语句,订阅方才会获得数据,所以在组件路由中获取数据并发布,在app.vue及其他路由组件中进行订阅是无法实现实时更新的,比如购物车的数量。此时我们可以使用pinia来完成这个操作,这两者有本质的区别,前者是用来传值的,后者是用来实现全局状态共享。

3.pinia的使用

(1)下载对应的库文件,如果在构建脚手架时已经选择了使用pinia进行状态管理那就不用再单独下载pinia了。

npm i pinia

(2)在main.js文件中配置pinia

import { createPinia } from 'pinia'
app.use(createPinia())

(3)在stores文件夹下创建.js文件,然后在文件中编写相关共享状态的数据,通常我们将一类状态编写在同一个.js文件中,在这个文件中需要导出defineStore,并暴露useCounter模块。 state属性是配置公告状态(数据)actions:定义修改公共状态的方法

import { defineStore } from "pinia";export const useCounter = defineStore("counter", {// state属性:配置公共状态(数据)state: () => {return { count: 0};},// actions:定义修改公共状态的方法actions: {
increment() {this.count++;
}
}
},);

(4)在需要用到useCounter的组件中进行导入和初始化的操作。

// 导入pinia
import { useCounter } from '@/stores/counter.js'
// 初始化对象
const counter = useCounter()

(5)通过counter 来调用相关变量和方法 

counter.increment()
counter.count=number.value

4.在请求过来的数据添数据

当请求过来的数据比我们需要的数据少时,我们可以自己将所需数据添加进去,比如分类中的全部,通常是接口数据中不包含的,此时就需要我们自己将分类添加到数据中去。

(1)在初始化时就将全部的数据以对象的方式放入数组中

// 初始商品分类的数据
const Categoricallists = ref([{ id: 0, cate_name: '全部' }])

(2)使用.push的方式将接口返回的数据添加到 数组Categoricallists中。注意:我们从接口中拿到的是一个数组,在push时需要将数据解构出来。

const sidebarreq = async () => {const sidebarres = await http(`/api/category`)sidebararr.value =  sidebarres.dataCategoricallists.value.push(...data[0].children)}
sidebarreq()

5.设置token和取token

设置token(将token存到本地存储中):  localStorage.setItem('data', data.data.token)

取token(从本地存储中取token):const token = localStorage.getItem('data')

6. 实现触底加载

(1)给盒子添加滚动事件

 <div class="box" @scroll="pageScroll"></div>

(2)写触底加载事件的逻辑

// 触底事件
const pageScroll = async (e) => {const sTop = e.target.scrollTop // 容器已滚动高度const sHeight = e.target.scrollHeight // 容器内容总高度const cHeight = e.target.clientHeight // 容器元素高度if (sHeight - sTop <= cHeight) {console.log('触底了')}
}

(3)注意需要给box设置固定的高度,不能把高度设为auto。

7.导航守卫判断登录状态。

 在index.js中写入相关代码,注意,此时如果没有登录,在跳转登录页面时我们已经通过to.path将我们需要跳转到的页面以参数的形式传递到了登录页面,我们可以在登录页面进行获取,如何进行路由的重定向

router.beforeEach((to, from,next) => {// to:目的地页面路由 from:当前要切换的路由// 返回false以取消导航// 一般需要授权验证的页面才需要拦截,其他页面直接放行。if (to.path == '/Shoppingcart'||to.path == '/Personal') {if (localStorage.getItem('data')) next();//已登录,允许跳转else {console.log('请先登录');next(`/login?target=${to.path}`)//跳转登录页面}}// return falseelse {next();//使用了next参数就不再使用返回值true/false来决定是否跳转。因为next()不带参数等价于return true,允许跳转}// 保证任意条件下next只执行一次  })

路由的重定向:

//   重定向路由router.replace(route.query.target)



 

http://www.qdjiajiao.com/news/11249.html

相关文章:

  • 唐山专业做网站百度推广产品有哪些
  • 石龙网站建设百度推广登录网站
  • 高端网站开发企业seo优化诊断工具
  • eclipse做购物网站谷歌官方app下载
  • vs2010可以做动态网站吗搜索关键词排名优化服务
  • 茂名做网站dyiee关键词优化报价查询
  • 如何在电脑上打开自己做的网站广告软文200字
  • 政府部门网站建设方案书无锡谷歌推广
  • 网站制作眼seo图片优化的方法
  • 三六五网做网站吗seo交流博客
  • 网站图片翻页怎么做磁力宅
  • 做301重定向会影响网站权重吗什么叫优化
  • 被骗去国外做博彩网站推广代做网页设计平台
  • 特卖网站怎么做中国人民银行网站
  • wordpress upload 2gbseo网络公司
  • 云南做网站公司近期国内外重大新闻10条
  • 项目网络进度图淘宝seo搜索引擎优化
  • 十堰做网站最专业的公司拉新推广怎么做代理
  • 网站产品详情页怎么做微信小程序平台官网
  • 模块建站工具长春网站建设开发
  • 网站制作的地方内容营销
  • 各类网站网络广告类型
  • 西安优化网站推广站长工具在线免费
  • 中英双语网站免费海报模板网站
  • 企业网站用织梦好吗百度推广代理公司
  • 棠下手机网站开发怎么创建网站快捷方式
  • p图做网站兼职网络推广员工作好做吗
  • 公司的网站建设费会计分录国外网站谷歌seo推广
  • wordpress 设h1网络优化排名培训
  • 网页制作公司网站网络推广服务