召隆企博汇论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 595|回复: 1

vue问题

[复制链接]

3

主题

0

回帖

159

积分

注册会员

Rank: 2

积分
159
发表于 2020-7-21 20:49:04 | 显示全部楼层 |阅读模式
vue中  怎样全局监听本地缓存中的某个字段
回复

使用道具 举报

24

主题

5

回帖

199

积分

公司现有员工

积分
199
发表于 2020-7-22 09:04:21 | 显示全部楼层
你的应用场景是什么?首先vue是指在服务端运行的,而vue打包之后是纯客户端的内容
缓存中的字段查看的话console.log是万能的
而如果你要监听某个变量是否有变动,可以写另外的方法
如setXXX方法,在set的callback中去处理你的事件。

以下给你个把例子
1、安装cnpm i good-storage --save
  1. import storage from 'good-storage'

  2. const SEARCH_KEY = '__search__'
  3. const SEARCH_MAX_LENGTH = 15

  4. // compare:findindex传入的是function,所以不能直接传val
  5. function insertArray(arr, val, compare, maxLen) {
  6. const index = arr.findIndex(compare)
  7. if (index === 0) {
  8. return
  9. }
  10. if (index > 0) {
  11. arr.splice(index, 1)
  12. }
  13. arr.unshift(val) // 插入到数组最前
  14. if (maxLen && arr.length > maxLen) {
  15. arr.pop() // 删除末位元素
  16. }
  17. }

  18. // 存储搜索历史
  19. export function saveSearch(query) {
  20. let searches = storage.get(SEARCH_KEY, [])
  21. insertArray(searches, query, (item) => {
  22. return item === query
  23. }, SEARCH_MAX_LENGTH)
  24. storage.set(SEARCH_KEY, searches)
  25. return searches
  26. }
  27. // 加载本地缓存的搜索历史
  28. export function loadSearch() {
  29. return storage.get(SEARCH_KEY, [])
  30. }
复制代码



2,数据用vuex传递

在store/actions.js中写入数据:

  1. import * as types from './mutation-types'
  2. import {saveSearch} from 'common/js/cache'

  3. export const saveSearchHistory = function({commit, state}, query) {
  4.   commit(types.SET_SEARCH_HISTORY, saveSearch(query))
  5. }
复制代码


组件中调用vuex

  1. import {mapActions} from 'vuex'

  2. // methods内:
  3. saveSearch() {
  4.   this.saveSearchHistory(this.query)
  5. },
  6. ...mapActions([
  7.   'saveSearchHistory'
  8. ])
复制代码



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|召隆企博汇 ( 粤ICP备14061395号 )

GMT+8, 2024-11-24 02:14 , Processed in 0.030768 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表