在Redux的reducer中,不能在全局(模块)作用域中设置变量。
Redux的reducer是一个纯函数,它接收旧的state和action作为参数,返回一个新的state。它的作用是根据action的类型来更新state。Reducer是无副作用的,应该是纯函数,即给定相同的输入,它们始终返回相同的输出,不修改输入参数,也不与外部环境交互。
在Redux中,我们通过创建一个初始状态对象来定义state,并通过在reducer中处理不同的action类型来更新这个state。Reducer中的变量应该是在函数作用域内定义的局部变量,用于临时存储计算结果或中间状态。这样做可以确保每次调用reducer时都有一致的输入和输出,避免状态的混乱和不可预测性。
如果需要在Redux中存储全局状态,可以将其定义为全局state中的一个属性,而不是在reducer中创建全局变量。这样做可以保持reducer的纯洁性,同时确保全局状态的一致性和可预测性。
举例来说,如果我们想在Redux中存储一个全局的计数器变量,我们可以将其定义为全局state中的一个属性,如下所示:
const initialState = {
counter: 0
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case 'INCREMENT':
return {
...state,
counter: state.counter + 1
};
case 'DECREMENT':
return {
...state,
counter: state.counter - 1
};
default:
return state;
}
};
// 示例的action
const incrementAction = { type: 'INCREMENT' };
const decrementAction = { type: 'DECREMENT' };
// 示例的调用
const state = reducer(undefined, incrementAction); // { counter: 1 }
const newState = reducer(state, decrementAction); // { counter: 0 }
在上述示例中,我们定义了一个全局状态对象initialState
,其中包含一个计数器变量counter
。在reducer中,我们根据不同的action类型来更新计数器的值。每次调用reducer时,它都会返回一个新的状态对象,保持全局状态的一致性。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云