tabPanes.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { createSlice } from '@reduxjs/toolkit';
  2. export const slice = createSlice({
  3. name: 'tabPanes',
  4. initialState: {
  5. activeTab: '',
  6. panes:[],
  7. toUnRead:false
  8. },
  9. reducers: {
  10. close: (state,action) => { //关闭tab
  11. const {delIndex,active} = action.payload;
  12. if(active===state.activeTab){ //如果关闭的是当前激活的tab则激活前一个或后一个tab
  13. state.activeTab = state.panes[delIndex-1]?state.panes[delIndex-1].key:state.panes[delIndex+1].key;
  14. }
  15. state.panes.splice(delIndex,1);
  16. },
  17. closeOther:(state,action) => { //关闭其他tab
  18. const pane = state.panes[action.payload.del];
  19. state.panes = [pane];
  20. //state.activeTab = action.payload.active;
  21. },
  22. add: (state,action) => { //打开新tab
  23. state.panes.push(action.payload);
  24. state.activeTab = action.payload.key;
  25. state.toUnRead = action.payload.isUnRead; //是否筛选未读
  26. },
  27. active:(state,action) => { //切换tab
  28. state.activeTab = action.payload.idName; //当前激活的tab
  29. state.toUnRead = action.payload.isUnRead; //是否筛选未读
  30. },
  31. panesNow: (state, action) => { //切换tab
  32. state.panes = [];
  33. },
  34. },
  35. });
  36. export const { close, closeOther, active, add, panesNow } = slice.actions;
  37. export default slice.reducer;