import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { historicalSearch: [], // 历史数据 allForumList: [], // 全部板块数据 homeRequestState: false, // 首页推荐和收藏接口的数据请求状态 这个是是否需要发送请求,因为用户点击收藏后需要重新获取 getUserInfoState: false, // 这个是是否在请求状态 favoriteList: [], // 收藏板块 数据 recommendList: [], // 推荐板块数据 menu: [], user: {}, // 用户信息 hotSearchkeywords: [], // 热门搜索 loading: null, }, getters: { }, mutations: { setHistoricalSearch(state, payload) { if (!Array.isArray(payload)) payload = [payload] let targetArr = [...new Set([...payload, ...state.historicalSearch])] if (targetArr.length > 10) targetArr = targetArr.slice(0, 10) state.historicalSearch = targetArr localStorage.setItem('historicalSearch', JSON.stringify(targetArr)) }, setAllForumList(state, payload) { state.allForumList = payload }, setHomeRequestState(state, payload) { state.homeRequestState = payload }, setFavoriteList(state, payload) { state.favoriteList = payload }, setRecommendList(state, payload) { state.recommendList = payload }, setUser(state, payload) { state.user = payload }, setHotSearchkeywords(state, payload) { state.hotSearchkeywords = payload }, setgetUserInfoState(state, payload) { state.getUserInfoState = payload }, setMenu(state, payload) { state.menu = payload } }, actions: { // 获取历史搜索的数据 fetchHistoricalSearch({ commit }) { let historicalSearch = JSON.parse(localStorage.getItem('historicalSearch')) || [] commit('setHistoricalSearch', historicalSearch) }, // 获取全部板块的数据 getAllForum({ commit }, that) { that.$http.get("/api/home/allForum").then(res => { if (res.code != 200) return; let allForumList = res.data commit('setAllForumList', allForumList) }).catch(err => { that.$message.error(err.message) }) }, // 获取用户信息 获取收藏信息那些数据 getUserInfo({ state, commit }, that) { if (state.getUserInfoState) return commit('setgetUserInfoState', true) that.$http.post("/api/home").then(res => { if (res.code != 200) return; let data = res.data let { config, favorite, hotSearchkeywords, recommend, user, menu } = data commit('setHomeRequestState', true) commit('setUser', user) commit('setFavoriteList', favorite) commit('setRecommendList', recommend) commit('setHotSearchkeywords', hotSearchkeywords) commit('setMenu', menu) if (that.userInfo) { // 这个是顶部用户数据的 这样不用监听是否请求成功 that.userInfo = user that.islogin = user.uid > 0 ? true : false; that.hotSearchkeywords = hotSearchkeywords that.menu = menu } }).catch(err => { that.$message.error(err.message) }).finally(() => { // that.$closeUnderLoading(that) commit('setgetUserInfoState', false) }) }, }, modules: { } })