vue mixins使用体验

本文介绍了如何在Vue项目中使用mixins来管理组件间的查询条件存储,特别是在页面刷新时能保持上次查询状态。作者通过创建一个混合对象,展示了如何在组件销毁前将listQuery数据存入sessionStorage,并在组件重新加载时恢复。
摘要由CSDN通过智能技术生成

以前只在项目中见到过mixins,因为用到的地方不多所以没有去记录。最近的项目中每个页面都需要保存每次查询时的条件以便在路由重新加载时使用,开始并没有想到,前天突然有了想法,就尝试着试了一下。
首先要了解mixins是干什么的,它是一个混入的对象,结构和咱们平时vue页面中的script中的内容基本一样。

export const mymixins = {
	methods: {
		// 同methods
	},
	data() {
		return {
			//同data
		}
	},
	created() {
		// 同created
	},
	//....
}

这就是一个mixins文件了,使用也很方便。

import { mymixins } from '@/components/mixins/mymixins'
export default {
	mixins: [mymixins],
	//...
}

这就把mixins引入进来了。

但是我一直不清楚它的作用到底是什么,最近那个需求给了我灵感,每个页面路由重新加载时都要去保存请求条件供下次使用,就需要每个页面在组件销毁前把查询的list存起来,而所有页面基本都使用的’listquery’作为查询对象,所以统一引入mixins去存会方便很多,而且mixins每个组件间是互不影响的。

export const mymixins = {
  methods: {
    finalCart() {
      this.listQuery?window.sessionStorage.setItem('listQuery',JSON.stringify(this.listQuery)):null
    }
  },
  created() {
    if (window.sessionStorage.getItem('listQuery')) {
      this.listQuery?this.listQuery = JSON.parse(window.sessionStorage.getItem('listQuery')):null
      window.sessionStorage.removeItem('listQuery')
    }
  },
  beforeDestroy() {
    this.finalCart()
  },
}

这样在销毁前调用finalcart把listquery存起来,组件重新加载后去重新赋值即可。
总结起来感觉就是mixins在许多组件需要做相同的事情,且数据结构相似的时候,可以通过公用一个方法来实现,可能还有其他会使用的地方,目前我认为最有效的用途是这种,以后遇到再做记录。相比起子组件,不需要通过组件那样注册和传值,而且内部不管data、methods等都通用,在这样的情况下更适合使用mixins。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值