我有一个非常简单的redux切片,它有两个reducer,用来切换boolean的on或off,还有一个钩子内的函数,用来根据当前forceNativeActivities
的状态调度这些动作。默认情况下,forceNativeActivities
是false
,所以第一次点击应该会把forceNativeActivities
变成true
。
当我第一次单击该按钮时,调度了toggleForceNativeActivitiesOn
,它将forceNativeActivities
更改为true
,这正是我所期望的。
问题是,如果我再次单击该按钮,我希望toggleForceNativeActivitiesOff
会被调度,因为forceNativeActivities
是true
,并将forceNativeActivities
更改为false,但这种情况不再发生,只有第一次切换有效。
import { createSlice } from '@reduxjs/toolkit';
export type ActivityState = {
forceNativeActivities: boolean;
};
const initialState: ActivityState = {
forceNativeActivities: false,
};
export const activitySlice = createSlice({
name: 'activity',
initialState,
reducers: {
toggleForceNativeActivitiesOn: (state) => {
state.forceNativeActivities = true;
},
toggleForceNativeActivitiesOff: (state) => {
state.forceNativeActivities = false;
},
},
});
export const { actions: activityActions, reducer: activityReducer } = activitySlice;
按钮单击时调用的函数:
const toggleForceNativeActivities = () => {
forceNativeActivities ? dispatch(toggleForceNativeActivitiesOff()) : dispatch(toggleForceNativeActivitiesOn());
setItem(PERSISTED_FORCED_ACTIVITY_KEY, forceNativeActivities.toString());
};
1条答案
按热度按时间smdncfj31#
尝试
您的行程常式正在使用不含
useCallback
的过时值。