Skip to content
This repository was archived by the owner on May 11, 2021. It is now read-only.

Commit 028b15e

Browse files
committed
构建 - localStorage 删除数据的逻辑
1 parent 6d53087 commit 028b15e

File tree

4 files changed

+76
-37
lines changed

4 files changed

+76
-37
lines changed

src/base/base-search-list.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@click="selectItem(item)"
99
>
1010
<span class="text">{{ item }}</span>
11-
<div class="icon" @click.stop="deleteItem">
11+
<div class="icon" @click.stop="deleteItem(item)">
1212
<i class="icon-close"></i>
1313
</div>
1414
</li>

src/common/js/cache.js

Lines changed: 52 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,10 @@
44

55
import localStorage from 'store/dist/store.modern'
66

7-
// import localforage from 'localforage'
8-
// 指定 localforage 库的存储驱动,该处为 localStorage,待选 WebSQL 和 IndexedDB
9-
10-
// localforage.setDriver(localforage.LOCALSTORAGE)
11-
127
const SEARCH_KEY = '__search__'
138
const SEARCH_MAX_LENGTH = 15
149

15-
function insertArray (arr, value, compare, maxLength) {
10+
function insertItem (arr, value, compare, maxLength) {
1611
const index = arr.findIndex(compare)
1712

1813
if (index === 0) { // 若是第一个数据
@@ -30,28 +25,20 @@ function insertArray (arr, value, compare, maxLength) {
3025
}
3126
}
3227

33-
// localforage 异步存储 search data
34-
35-
// export async function saveSearch (query) {
36-
// let searches = []
37-
38-
// await localforage.getItem(SEARCH_KEY).then(value => {
39-
// searches = value || []
40-
// })
41-
42-
// insertArray(searches, query, item => {
43-
// return item === query
44-
// }, SEARCH_MAX_LENGTH)
28+
function deleteItem (arr, compare) {
29+
const index = arr.findIndex(compare)
4530

46-
// await localforage.setItem(SEARCH_KEY, searches)
31+
if (index >= 0) {
32+
arr.splice(index, 1)
33+
}
34+
}
4735

48-
// return searches
49-
// }
36+
// export function
5037

51-
export function saveSearch (query) {
38+
export function saveSearchItem (query) {
5239
let searches = localStorage.get(SEARCH_KEY) || []
5340

54-
insertArray(searches, query, item => {
41+
insertItem(searches, query, item => {
5542
return item === query
5643
}, SEARCH_MAX_LENGTH)
5744

@@ -62,3 +49,45 @@ export function saveSearch (query) {
6249
export function loadSearchData () {
6350
return localStorage.get(SEARCH_KEY) || []
6451
}
52+
53+
export function deleteSearchItem (query) {
54+
let searches = localStorage.get(SEARCH_KEY)
55+
56+
deleteItem(searches, item => {
57+
return item === query
58+
})
59+
60+
localStorage.set(SEARCH_KEY, searches)
61+
62+
return searches
63+
}
64+
65+
export function deleteAllSearchItem () {
66+
localStorage.remove(SEARCH_KEY)
67+
return []
68+
}
69+
70+
/**
71+
* 1. localforage 异步存储 search data
72+
* 2. localforage 库可指定存储驱动,默认优先级为 IndexedDB、WebSQL、localStorage
73+
*/
74+
75+
// import localforage from 'localforage'
76+
77+
// localforage.setDriver(localforage.LOCALSTORAGE)
78+
79+
// export async function saveSearch (query) {
80+
// let searches = []
81+
82+
// await localforage.getItem(SEARCH_KEY).then(value => {
83+
// searches = value || []
84+
// })
85+
86+
// insertItem(searches, query, item => {
87+
// return item === query
88+
// }, SEARCH_MAX_LENGTH)
89+
90+
// await localforage.setItem(SEARCH_KEY, searches)
91+
92+
// return searches
93+
// }

src/components/the-search/search.vue

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class="hot-key-item"
1616
v-for="(key, index) of hotKey"
1717
:key="index"
18-
@click="selectHotKey(key.k)"
18+
@click="selectQueryRecord(key.k)"
1919
>
2020
<span>{{ key.k }}</span>
2121
</li>
@@ -25,18 +25,22 @@
2525
<div class="search-history" v-show="searchHistory.length">
2626
<h1 class="title">
2727
<span class="text">搜索历史</span>
28-
<span class="clear-btn">
28+
<span class="clear-btn" @click.stop="clearAllHistory">
2929
<i class="icon-clear"></i>
3030
</span>
3131
</h1>
32-
<BaseSearchList :searchData="searchHistory" @selectItem="selectItem"/>
32+
<BaseSearchList
33+
:searchData="searchHistory"
34+
@selectItem="selectQueryRecord"
35+
@deleteItem="deleteSearchHistory"
36+
/>
3337
</div>
3438
</div>
3539
</div>
3640

3741
<PartsResult
3842
@listScrolling="blurInputBox"
39-
@selectQuery="saveSearchData"
43+
@selectQuery="saveSearchItem"
4044
:query="queryKey"
4145
v-show="queryKey"
4246
/>
@@ -68,11 +72,7 @@ export default {
6872
},
6973
7074
methods: {
71-
selectItem (item) {
72-
this.$refs.searchBox.setQuery(item)
73-
},
74-
75-
saveSearchData () {
75+
saveSearchItem () {
7676
this.saveSearchHistory(this.queryKey)
7777
},
7878
@@ -84,7 +84,7 @@ export default {
8484
this.queryKey = query
8585
},
8686
87-
selectHotKey (item) {
87+
selectQueryRecord (item) {
8888
/**
8989
* 调用子组件方法传值的优势在于:
9090
* 1. 不用设置不必要的 props 和 watch
@@ -104,7 +104,9 @@ export default {
104104
},
105105
106106
...mapActions([
107-
'saveSearchHistory'
107+
'saveSearchHistory',
108+
'deleteSearchHistory', // 自动传入载荷
109+
'clearAllHistory'
108110
])
109111
},
110112

src/store/actions.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import * as types from './mutation-types'
44
import { playMode } from 'common/js/config'
55
import { shuffle } from 'common/js/util'
6-
import { saveSearch } from 'common/js/cache'
6+
import { saveSearchItem, deleteSearchItem, deleteAllSearchItem } from 'common/js/cache'
77

88
function findIndex (list, song) {
99
return list.findIndex(item => {
@@ -98,5 +98,13 @@ export const insertSong = ({ commit, state }, song) => {
9898
}
9999

100100
export const saveSearchHistory = function ({ commit }, query) {
101-
commit(types.SET_SEARCH_HISTORY, saveSearch(query))
101+
commit(types.SET_SEARCH_HISTORY, saveSearchItem(query))
102+
}
103+
104+
export const deleteSearchHistory = function ({ commit }, query) {
105+
commit(types.SET_SEARCH_HISTORY, deleteSearchItem(query))
106+
}
107+
108+
export const clearAllHistory = function ({ commit }) {
109+
commit(types.SET_SEARCH_HISTORY, deleteAllSearchItem())
102110
}

0 commit comments

Comments
 (0)