VUE3 ------入门(vuex和Axios)

VUE3 ------入门


前言

一、如何实现vuex的持久化 ?

不用插件

  1. 成功获取token 一式两份 一份存入vuex 一份存入本地ls cookie
  2. vuex中state初始化的时候 优先从本地取
    state:{
      token: getItem('token') || ''
    }

使用插件

  1. 安装一个插件
  2. vuex plugins
  plugins:[
    注册插件
  ]
// 在响应式数据变化的时候进行自动化同步到本地

二、在Axios封装中的那些事儿 …

1.实例化

// 1.实例化  
//(1).baseURL   接口根路径   (2).timeout   接口最长时间
const instance = axios.create({
  baseURL: '....',
  timeout: 5000
})

2.请求拦截器

vue3请求拦截器,支持多个,后面结果为前面的参数,前面的结果为最后结果
注意:Bearer后面有一个空格

// instance.interceptors.request.use(config => {
//   return config
// }, e => Promise.reject(e))
instance.interceptors.request.use(config => {
  // 1. 获取token
  const { token } = store.state.user.profile
  // 2. 请求头设置token
  if (token) config.headers.Authorization = `Bearer ${token}`
  return config
}, e => Promise.reject(e))

3.响应拦截器

vue3响应拦截器,支持多个,前面结果为后面的参数,后面的结果为最后结果

  1. token失效 401
// 处理返回数据 token失效跳回到登录页
instance.interceptors.response.use(
 // 200-300
(response)=>{
   return response
 },
 // 其余码
 (error) => {
   return Promise.reject(error)
 }
)
instance.interceptors.response.use(res => res.data, e => {
  if (e.response && e.response.status === 401) {
    const redirectUrl = encodeURIComponent(router.currentRoute.value.fullPath)
    router.push('/login?redirectUrl=' + redirectUrl)
  }
  return Promise.reject(e)
})
  1. 接口不按照常规状态码返回的时候可以自定义容错
    200 - 300 成功 否则 失败

三. 怎么理解逻辑复用 ?

响应式数据以及操作数据的行为方法的一个可以重复使用的组合
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值