webapp/src/redux/features/app/appSlice.ts

(完整代码) 1KB

// Copyright (c) Microsoft. All rights reserved.

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { Alert, Alerts, AppState } from './AppState';

const initialState: AppState = {};

export const appSlice = createSlice({
    name: 'app',
    initialState,
    reducers: {
        setAlerts: (state: AppState, action: PayloadAction<Alerts>) => {
            state.alerts = action.payload;
        },
        addAlert: (state: AppState, action: PayloadAction<Alert>) => {
            const keys = Object.keys(state.alerts ?? []);
            let newIndex = keys.length.toString();
            if (keys.length >= 3) {
                newIndex = keys[0];
                delete state.alerts![newIndex];
            }
            state.alerts = { ...state.alerts, [newIndex]: action.payload };
        },
        removeAlert: (state: AppState, action: PayloadAction<string>) => {
            if (state.alerts) delete state.alerts[action.payload];
        },
    },
});

export const { addAlert, removeAlert, setAlerts } = appSlice.actions;

export default appSlice.reducer;

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。