12.4 概念模块功能完善
This commit is contained in:
109
src/composables/useSearchTracking.js
Normal file
109
src/composables/useSearchTracking.js
Normal file
@@ -0,0 +1,109 @@
|
||||
import { ref } from 'vue'
|
||||
import searchTracker from '@/utils/posthog/search-tracker'
|
||||
|
||||
/**
|
||||
* 搜索追踪组合式函数
|
||||
*
|
||||
* 使用方式:
|
||||
* const {
|
||||
* onSearchFocus,
|
||||
* onSearch,
|
||||
* onSearchResult,
|
||||
* onResultClick,
|
||||
* } = useSearchTracking()
|
||||
*/
|
||||
export function useSearchTracking() {
|
||||
// 当前搜索关键词
|
||||
const currentQuery = ref('')
|
||||
// 搜索结果数量
|
||||
const resultCount = ref(0)
|
||||
|
||||
/**
|
||||
* 搜索框聚焦
|
||||
*/
|
||||
const onSearchFocus = (pagePath = '') => {
|
||||
searchTracker.onSearchFocus(pagePath)
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行搜索
|
||||
*/
|
||||
const onSearch = (params) => {
|
||||
currentQuery.value = params.query || ''
|
||||
searchTracker.onSearch(params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索结果返回
|
||||
*/
|
||||
const onSearchResult = (result) => {
|
||||
resultCount.value = result.total || result.list?.length || 0
|
||||
searchTracker.onSearchResult(result)
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击搜索结果
|
||||
*/
|
||||
const onResultClick = (item, position) => {
|
||||
searchTracker.onResultClick(item, position)
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击搜索建议
|
||||
*/
|
||||
const onSuggestionClick = (suggestion, position) => {
|
||||
searchTracker.onSuggestionClick(suggestion, position)
|
||||
currentQuery.value = suggestion
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击热门搜索
|
||||
*/
|
||||
const onHotSearchClick = (keyword, position) => {
|
||||
searchTracker.onHotSearchClick(keyword, position)
|
||||
currentQuery.value = keyword
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击搜索历史
|
||||
*/
|
||||
const onHistoryClick = (keyword, position) => {
|
||||
searchTracker.onHistoryClick(keyword, position)
|
||||
currentQuery.value = keyword
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空搜索历史
|
||||
*/
|
||||
const onHistoryClear = () => {
|
||||
searchTracker.onHistoryClear()
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置搜索状态
|
||||
*/
|
||||
const reset = () => {
|
||||
currentQuery.value = ''
|
||||
resultCount.value = 0
|
||||
searchTracker.reset()
|
||||
}
|
||||
|
||||
return {
|
||||
// 状态
|
||||
currentQuery,
|
||||
resultCount,
|
||||
|
||||
// 方法
|
||||
onSearchFocus,
|
||||
onSearch,
|
||||
onSearchResult,
|
||||
onResultClick,
|
||||
onSuggestionClick,
|
||||
onHotSearchClick,
|
||||
onHistoryClick,
|
||||
onHistoryClear,
|
||||
reset,
|
||||
}
|
||||
}
|
||||
|
||||
export default useSearchTracking
|
||||
Reference in New Issue
Block a user