减速机如何更新商店

时间:2018-08-25 07:21:42

标签: reactjs redux reducers

我是Redux的新手,我在理解减速器的概念时发现了一些问题, 我可以看到许多示例,这些示例显示了当前状态并返回更新状态, 我的问题是它如何通过返回新状态来更新商店(我发现机制难以理解), 有人可以解释一下吗。

3 个答案:

答案 0 :(得分:4)

this is not my image

这是我在学习相同概念时发现的非常有用的图像。


发送

当您分派任何函数时,它将分配给所有减速器,并且如果分派类型匹配,它将更改该减速器的状态。

 functionName:()=>(dispatch)({type:'some-thing-to-match',payload})



减速器 处理状态更改。


商店 所有减速器(根减速器)的组合。

const store = combineReducers({
Reducer1:r1,
Reducer2:r2,
Reducer3:r3
})


例如,在TodoList中获取与r1匹配的调度函数并更改其状态。然后通过'react-redux'连接,我们将reducers状态连接到TodoList。

var mapStateToProps = state=>{
 return:{
 r1:r1
}
}

然后反应将对状态的任何变化做出反应。如果r1的状态发生更改,则它将更新该组件。


您的问题是如何通过返回状态来更新存储。减速器将获得store(状态)并作为输入,并根据功能更改存储,并将状态返回到store。
然后,我们可以将组件连接到该商店以捕获其中的任何更改。

  

正如我们在图像中看到的。调度将更改商店的状态。   您可以导入(连接)该减速器以查看您的更改   组件。(这里TodoItem是该组件)

答案 1 :(得分:2)

Redux存储库仅仅是保留应用程序所有状态的对象。 reducer是更新商店的唯一方法。

reducer 是一个纯函数,具有旧状态并返回新状态。在reducer中,我们需要做的是只提供存储当前具有的旧状态,然后提供要更改状态的新状态。您可以参考this来了解reduce函数的详细说明。

简而言之,reduce会利用现有状态对象更新通过reducer函数传递的某些属性,并返回新的对象状态。

下面的链接有更好的解释。这是一个非常不错的博客,介绍如何创建自己的redux。您将确切了解redux存储中会发生什么。

https://www.jamasoftware.com/blog/lets-write-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
  }
}