首页
学习
活动
专区
圈层
工具
发布

Redux(二):组织reducer

reducer是一个可预测的纯函数,接收2个参数:当前的state和action,然后返回更新后的state。...} 这是一个比较简单的reducer,包含2个状态区域:todos和visibilityFilter,4个子条件语句对应的action.type分别为:SET_VISIBILITY_FILTER、ADD_TODO...在实际项目中,分支语句对应的action.type会非常多,如果写到一个reducer里这个函数会变的非常的臃肿,所以接下来需要对其进行逐步的拆分。...个子reducer: function visibilityReducer(visibilityState="SHOW_ALL",action){ switch (action.type){...Reducer本质上就是纯函数,每一次派发action都会导致Reducer的执行,而Reducer的内部通过条件语句下发到子reducer,最终计算出新的state状态树并更新store。

70830
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React进阶(3)-上手实践Redux-如何改变store中的数据

    在Reducer中会接收到action,通过if等判断,确定要执行state的操作,这个reducer必须是个纯函数,要有返回值,返回的结果会返回给store,这里的state是上一次(原先)组件的状态...完全复制了state,通过对newState的修改避免了对state的修改 function reducer(state, action){      if(action.type ==== 'handle_input_change...随之创建一个实时记录本(reducer) 真正的新老房信息的变更操作都是在reducer这个函数中完成的,并且它是一个纯函数,必须要有返回值 在Reducer函数中,接收两个参数,第一个是上一次组件的状态值...在reducer函数中进行逻辑判断,数据变更等操作 if(action.type === 'addInputcontent'){         const newState = JSON.parse(...在reducer函数中进行对公共组件数据逻辑的操作 if (action.type === 'deletelist') {         // 下面这个也是拷贝原对象的一种方式,也很常用

    3.3K30

    从应用到源码-深入浅出Redux

    在reducer函数执行时会匹配 action.type 执行相关逻辑(当然,在 action 对象中也可以传递一些额外的属性作为本次reducer执行时的参数)。...函数中是否对于匹配的 action.type 存在当任何类型都不匹配 action.type 时,默认会返回传入的 state : function reducer(state = { number:...本质上仍然是通过内部保存传入的 reducers 变量,返回一个整体组装而成的 reducer 函数。...这也就意味着如果不同的 reducer 中存在相同的 action.type 的匹配那么派发 action 时所以匹配到类型的 reducer 都会被计算。 也许,你不是很明白上边那段话。...的指向,但是 redux 中间件其实本质思想和它是一致的都是通过闭包访问外部自由变量的形式去包裹原始的 action ,从而返回一个新的 action 。

    1.6K10

    redux架构基础

    这个唯一Store上的状态,是一个树形的对象,每个组件往往只是用树形对象上一部分的数据,而如何设计Store上状态的结构,就是Redux应用的核心问题。...// 注册的回调函数包含了业务方法 CounterStore.dispatchToken = Dispatcher.register((action) => { if (action.type...(); } else if (action.type === ActionTypes.DECREMENT) { counterValues[action.counterCaption...因此就要用到react的跨代传值利器——context。 ? 所谓Context,就是“上下文环境”,让一个树状组件上所有组件都能访问一个共同的对象,为了完成这个任务,需要上级组件和下级组件配合。...一样的值,两者必须一致,不然就无法访问到context, */ WithContainer.contextTypes = { store: PropTypes.object } 然后就可以用this.context.store

    1.7K10

    React进阶(3)-上手实践Redux-如何改变store中的数据

    在Reducer中会接收到action,通过if等判断,确定要执行state的操作,这个reducer必须是个纯函数,要有返回值,返回的结果会返回给store,这里的state是上一次(原先)组件的状态...完全复制了state,通过对newState的修改避免了对state的修改 function reducer(state, action){ if(action.type ==== 'handle_input_change...(reducer) 真正的新老房信息的变更操作都是在reducer这个函数中完成的,并且它是一个纯函数,必须要有返回值 在Reducer函数中,接收两个参数,第一个是上一次组件的状态值,而第二个是组件具体的动作...租户想要换携带有沙发,电视等大房子,这个具体的动作就是action,首先换房子是一个动作,在元素上绑定相应的事件 在该监听事件内,定义一个action动作,确定要做的事件类型,这个action必须遵循一定的规则...在reducer函数中进行对公共组件数据逻辑的操作 if (action.type === 'deletelist') { // 下面这个也是拷贝原对象的一种方式,也很常用

    2.8K20

    redux 文档到底说了什么(上)

    上面的 reducer 代码可以改写成: const todosReducer = (todos: TTodo[] = initTodos, action: any) => { switch (action.type...读取 这里使用 Provider 组件全局注入 store 对象,使得所有人都可以访问 store。...第五版:表驱动优化 reducer 当操作变多后,会发现 action type 也变很多,reducer 的结构就变得很丑陋: // todos/reducer.ts const todosReducer...handler(todos, action) : todos } 第六版:使用 immer 来优化 reducer 现在把目光放在 todosReducer 上,我们发现每次返回 state 都要用扩展运算符来返回...第八版:使用 thunk 处理异步 上面说的都是数据层面上的操作,一直没有说异步处理。redux 不推荐在 reducer 里写发请求的代码。这些代码应该都放在 action creator 里的。

    2.3K20

    将 useReducer 应用于 Web Worker,擦出奇妙的火花

    dispatch 函数接受指定要执行的操作类型的对象。它本质上是将 action 的类型传递给 reducer 函数,而 reducer 函数用于更新 state。...reducer 函数 reducer 是一个接受两个参数的函数,当前 state 和 action 对象。它使用接收到的 action 来确定 state 的更改并返回新 state。...下面的代码演示了如何使用 reducer 函数来改变 state: function reducer(state, action) { switch (action.type) { case...函数被 action.type 触发时,它就会将新的 state 作为 reducer 函数内部的更改返回。...action 是一种对象类型,它指示 reducer 如何更改 state。它必须具有 type 属性。可以在条件语句中使用 action.type 来决定 state 如何更改。

    2.4K30

    医疗数字阅片-医学影像-Module: Panel-自定义面板-中二-Redux&react-redux状态管理详解

    reducer(previousState,action) action action本质上是一个JavaScript对象,其中必须包含一个type字段来表示将要执行的动作,其他的字段都可以根据需求来自定义...connect实际上是一个高阶函数,返回一个新的已与 Redux store 连接的组件类。...mapDispatchToProps:将需要绑定的响应事件(action)作为props传递到组件上。 ? Provider Provider实现store的全局访问,将store传给每个组件。...一般来说你会通过 store.dispatch() 将 action 传到 store. Action 本质上是 JavaScript 普通对象。...拆分 Reducer 目前的代码看起来有些冗长: function todoApp(state = initialState, action) { switch (action.type) {

    4.4K10

    学习react-redux,看这篇文章就够啦!

    ) { switch (action.type) { case "SOME_ACTION_TYPE": // 在这里处理 action,并返回新的状态对象 return...包含 actions 对象的函数,不可是异步函数。但可以借助 thunk 中间件的能力,在 action 函数内部执行异步操作。...2、vuex 只适用于 vue 框架之中 # 设计上 1、redux redux 中不可以直接修改原始 state 数据,需要拷贝原数据进行修改 不可执行异步操作,但可以通过中间件处理异步操作 2、vuex...提供了 actions 来处理异步函数,Actions 类似于 mutations,但可以包含异步代码 # 使用步骤: vuex 和 react 在语法上各有不同,但在步骤都可以统一为 3 步: 1、...创建仓库;2、获取仓库;3、修改仓库、 在具体实现上如下: Redux:使用 Redux 的步骤包括定义 action 类型、创建 action 创建函数、编写 reducer 处理器,以及创建和配置

    2.6K20

    React归纳笔记:快速上手Redux之一初识

    // 第二个参数action是操作state的行为,后面再做介绍 const reducer = function(state=initState,action){ // 后续可能会有多个action...2、dispatch派发action后,最终会执行到reducer函数 3、在reducer内得到的第二个参数即是派发的action 4、根据action的type属性,来决定是否操作state ---...action){ // 后续可能会有多个action,所以此处建议使用switch对type进行判断 switch(action.type){ case "ADD_TO_STATE...本质上是一个由函数产生的具有type属性的普通对象。...但需要注意以下几点: 1、reducer必须要是同步的纯函数,接收state与action 2、用户每次dispatch(action)后,reducer都会触发执行 3、reducer必须要有返回值,

    65630
    领券