Reactjs 还原程序如何更新存储

Reactjs 还原程序如何更新存储,reactjs,redux,reducers,Reactjs,Redux,Reducers,我是Redux的新手,在理解减速机的概念时发现了一些问题, 我可以看到很多例子显示它接受当前状态并返回更新状态, 我的问题是它如何通过返回新状态来更新存储(我发现很难理解其机制), 谁能给我解释一下吗。 这是我在学习相同概念时发现非常有用的图像。 调度 当您分派任何函数时,它将转到所有的减速机,如果分派类型匹配,它将更改该减速机的状态 functionName:()=>(dispatch)({type:'some-thing-to-match',payload}) const st

我是Redux的新手,在理解减速机的概念时发现了一些问题, 我可以看到很多例子显示它接受当前状态并返回更新状态, 我的问题是它如何通过返回新状态来更新存储(我发现很难理解其机制), 谁能给我解释一下吗。

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

调度

当您分派任何函数时,它将转到所有的减速机,如果分派类型匹配,它将更改该减速机的状态

 functionName:()=>(dispatch)({type:'some-thing-to-match',payload})
const store = combineReducers({
Reducer1:r1,
Reducer2:r2,
Reducer3:r3
})


减速器 处理状态变化


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


例如,以TodoList中与r1匹配的dispatch函数为例,并更改其状态。然后通过“react redux”中的连接,我们将该reducers状态连接到TodoList

var mapStateToProps = state=>{
 return:{
 r1:r1
}
}
然后react将对状态的任何变化做出反应。如果r1的状态发生更改,则它将更新该组件


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

正如我们在图片中看到的。Dispatch将更改存储的状态。然后 您可以导入(连接)该减速器以查看 组件。(此处TodoItem是该组件)

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

调度

当您分派任何函数时,它将转到所有的减速机,如果分派类型匹配,它将更改该减速机的状态

 functionName:()=>(dispatch)({type:'some-thing-to-match',payload})
const store = combineReducers({
Reducer1:r1,
Reducer2:r2,
Reducer3:r3
})


减速器 处理状态变化


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


例如,以TodoList中与r1匹配的dispatch函数为例,并更改其状态。然后通过“react redux”中的连接,我们将该reducers状态连接到TodoList

var mapStateToProps = state=>{
 return:{
 r1:r1
}
}
然后react将对状态的任何变化做出反应。如果r1的状态发生更改,则它将更新该组件


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

正如我们在图片中看到的。Dispatch将更改存储的状态。然后 您可以导入(连接)该减速器以查看 组件。(此处TodoItem是该组件)


Redux存储区只是一个保存应用程序所有状态的对象。reducer是更新存储的唯一方法

reducer是一个纯函数,它接受旧状态并返回新状态。实际上,我们需要做的是,我们只提供存储当前拥有的旧状态,然后是我们要更改状态的新状态。有关reduce函数的详细说明,请参阅

简言之,reducer接受现有状态对象更新通过reducer函数传递的某些属性,并返回新的对象状态

下面的链接有更好的解释。这是一个很好的博客如何创建自己的redux。您将获得redux商店中发生的一切


Redux存储区只不过是一个保存应用程序所有状态的对象。reducer是更新存储的唯一方法

reducer是一个纯函数,它接受旧状态并返回新状态。实际上,我们需要做的是,我们只提供存储当前拥有的旧状态,然后是我们要更改状态的新状态。有关reduce函数的详细说明,请参阅

简言之,reducer接受现有状态对象更新通过reducer函数传递的某些属性,并返回新的对象状态

下面的链接有更好的解释。这是一个很好的博客如何创建自己的redux。您将获得redux商店中发生的一切


实际上,这是我缺少的关于减速机的部分,我没有捕捉到的部分是减速机输出,必须分配给存储属性

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
  }
}

实际上,这是我缺少的关于减缩器的部分,我没有捕捉到的部分是减缩器输出,必须分配给存储属性

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
  }
}

一个链接到一个潜在的解决方案总是受欢迎的,但请如果链接死了,答案仍然是答案。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。考虑到仅仅是一个指向外部站点的链接是一个可能的原因。一个指向潜在解决方案的链接总是受欢迎的,但是如果链接消失,答案仍然是答案。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。考虑到仅仅是一个指向外部站点的链接是一个可能的原因。很高兴听到:-)很高兴听到:-)