Redux 允许还原程序访问状态
我有一个reducer,它维护某种列表中当前可见的项,并有一个用于显示下一个和上一个项的案例:Redux 允许还原程序访问状态,redux,Redux,我有一个reducer,它维护某种列表中当前可见的项,并有一个用于显示下一个和上一个项的案例: export function currentIndex(state = null, action) { switch (action.type) { case types.INCREMENT: return state + 1 case types.DECREMENT: return state - 1; } } 我还有一个random状态,该
export function currentIndex(state = null, action) {
switch (action.type) {
case types.INCREMENT:
return state + 1
case types.DECREMENT:
return state - 1;
}
}
我还有一个random
状态,该状态最初为false,但当设置为true时,我希望currentListItem
减速机能够对此进行解释,并输出一个随机数
在redux中,哪种方法最惯用?惯用的解决方案是使用中间件包(或类似软件包)将reducer逻辑转换为thunk 这允许您将特殊类型的
操作
视为函数,这意味着您可以使用特定的操作相关逻辑扩展普通操作。您给出的需要访问状态以有条件地确定操作逻辑的示例是redux thunk的一个很好的用例
下面是一个示例,说明了如何将逻辑从减速机中拉出来,然后发出砰的一声。您应该注意,与reducer不同,thunk显式支持通过getState
和dispatch
函数获取状态和分派后续操作
Thunk示例
export const increment= () => {
return (dispatch, getState) => {
const state = getState()
const delta = (state.random) ? getRandomNumber() : 1
dispatch({
type: INCREMENT,
delta
})
}
}
export function currentIndex(state = null, action) {
switch (action.type) {
case types.INCREMENT:
return state + action.delta
}
}
惯用的解决方案是使用中间件包(如(或类似)将reducer逻辑转换为thunk 这允许您将特殊类型的
操作
视为函数,这意味着您可以使用特定的操作相关逻辑扩展普通操作。您给出的需要访问状态以有条件地确定操作逻辑的示例是redux thunk的一个很好的用例
下面是一个示例,说明了如何将逻辑从减速机中拉出来,然后发出砰的一声。您应该注意,与reducer不同,thunk显式支持通过getState
和dispatch
函数获取状态和分派后续操作
Thunk示例
export const increment= () => {
return (dispatch, getState) => {
const state = getState()
const delta = (state.random) ? getRandomNumber() : 1
dispatch({
type: INCREMENT,
delta
})
}
}
export function currentIndex(state = null, action) {
switch (action.type) {
case types.INCREMENT:
return state + action.delta
}
}
呵呵?这不是教程代码。如果是的话,为什么会无关紧要呢??单个reducer不是一个选项,因为next和previous是通过next和previoushtml按钮调度的,random是一个可切换的按钮。因此,当切换到“下一步”时,按“下一步”将生成一个随机项。它看起来像一个教程代码(每个人都在他们的教程redux应用程序中递增数字)。“显示下一个和上一个项目”-预计会看到相应命名的操作,如
next
和PREV
或其他操作。否则,道歉:-)“单个减速器不是一个选项”-为什么?发出事件/发送动作的内容并不重要。存储结构实际上不应该依赖于您的UI。因为“下一步”按钮将分派增量操作。按下random可调度一个动作,该动作将“random”状态设置为true。用户仍然可以单击“下一步”和“上一步”。如果random是真的,那么我需要能够改变prev和next的行为。嗯?这不是教程代码。如果是的话,为什么会无关紧要呢??单个reducer不是一个选项,因为next和previous是通过next和previoushtml按钮调度的,random是一个可切换的按钮。因此,当切换到“下一步”时,按“下一步”将生成一个随机项。它看起来像一个教程代码(每个人都在他们的教程redux应用程序中递增数字)。“显示下一个和上一个项目”-预计会看到相应命名的操作,如next
和PREV
或其他操作。否则,道歉:-)“单个减速器不是一个选项”-为什么?发出事件/发送动作的内容并不重要。存储结构实际上不应该依赖于您的UI。因为“下一步”按钮将分派增量操作。按下random可调度一个动作,该动作将“random”状态设置为true。用户仍然可以单击“下一步”和“上一步”。如果random是真的,那么我需要能够改变prev和next的行为。谢谢你的回答。我已经在使用thunks,并考虑过这是一个解决方案,但不确定这是一个方向。我同意这个。谢谢你的时间:)很高兴能帮上忙。你能把答案标为被接受吗?如果你觉得很慷慨,就投赞成票。谢谢你的回答。我已经在使用thunks,并考虑过这是一个解决方案,但不确定这是一个方向。我同意这个。谢谢你的时间:)很高兴能帮上忙。你能把答案标为被接受吗?如果你觉得很慷慨,就投赞成票。助教。