我是Redux的新手,我在理解减速器的概念时发现了一些问题, 我可以看到许多示例,这些示例显示了当前状态并返回更新状态, 我的问题是它如何通过返回新状态来更新商店(我发现机制难以理解), 有人可以解释一下吗。
答案 0 :(得分:4)
这是我在学习相同概念时发现的非常有用的图像。
当您分派任何函数时,它将分配给所有减速器,并且如果分派类型匹配,它将更改该减速器的状态。
functionName:()=>(dispatch)({type:'some-thing-to-match',payload})
const store = combineReducers({
Reducer1:r1,
Reducer2:r2,
Reducer3:r3
})
var mapStateToProps = state=>{
return:{
r1:r1
}
}
然后反应将对状态的任何变化做出反应。如果r1的状态发生更改,则它将更新该组件。
正如我们在图像中看到的。调度将更改商店的状态。 您可以导入(连接)该减速器以查看您的更改 组件。(这里TodoItem是该组件)
答案 1 :(得分:2)
Redux存储库仅仅是保留应用程序所有状态的对象。 reducer是更新商店的唯一方法。
reducer 是一个纯函数,具有旧状态并返回新状态。在reducer中,我们需要做的是只提供存储当前具有的旧状态,然后提供要更改状态的新状态。您可以参考this来了解reduce函数的详细说明。
简而言之,reduce会利用现有状态对象更新通过reducer函数传递的某些属性,并返回新的对象状态。
下面的链接有更好的解释。这是一个非常不错的博客,介绍如何创建自己的redux。您将确切了解redux存储中会发生什么。
答案 2 :(得分:0)
实际上,这是我缺少的关于减速器的部分,我没有抓住的部分是必须分配减速器以放置减速器
let Action={type:'SET_VISIBILITY_FILTER',text: 'test pay load'}
//Invoking Reducer
let store=todoApp({},Action)
//Reducer
function todoApp(state = initialState, action) {
switch (action.type) {
case SET_VISIBILITY_FILTER:
return Object.assign({}, state, {
message: action.text
})
default:
return state
}
}