index.js 1.82 KB
/*
 * @Date: 2022-04-18 15:59:42
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2022-06-13 11:30:40
 * @FilePath: /tswj/src/store/index.js
 * @Description: 文件描述
 */
import { defineStore } from 'pinia';
// import { testStore } from './test'; // 另一个store
import _ from 'lodash';
import { useRouter } from 'vue-router'

export const mainStore = defineStore('main', {
  state: () => {
    return {
      msg: 'Hello world',
      count: 0,
      auth: false,
      comment_num: 0,
      video_detail: {},
      scrollTop: 0,
      scrollTopCollection: 0,
      scrollTopLike: 0,
      scrollTopPerson: 0,
      keepPages: ['default'], // 很坑爹,空值全部都缓存
    };
  },
  getters: {
    getKeepPages () {
      return this.keepPages
    },
    // getTestStoreList () {
    //   return testStore().list // 返回另一个store的值
    // }
  },
  actions: {
    changeState (state) {
      this.auth = state;
    },
    changeCommentNum (num) {
      this.comment_num = num;
    },
    changeVideoDetail (v) {
      this.video_detail = v;
    },
    changeScrollTop (v) {
      this.scrollTop = v;
    },
    changeScrollTopCollection (v) {
      this.scrollTopCollection = v;
    },
    changeScrollTopLike (v) {
      this.scrollTopLike = v;
    },
    changeScrollTopPerson (v) {
      this.scrollTopPerson = v;
    },
    changeKeepPages () { // 清空所有缓存,用一个不存在的值覆盖
      this.keepPages = ['default'];
    },
    keepThisPage () { // 新增缓存页
      const $router = useRouter();
      const page = $router.currentRoute.value.meta.name;
      this.keepPages.push(page);
    },
    removeThisPage () { // 删除缓存页
      const $router = useRouter();
      const page = $router.currentRoute.value.meta.name;
      _.remove(this.keepPages, item => item === page)
    }
  },
});