redux中action与reducer
redux中action与reducer
action
对于action,将数据从应用程序发送到存储的有效信息负载。可以将其理解为用户对于要去操作某个动作而做出的反应。是改变store数据的唯一方法。可以通过store.dispatch(action),将其发送给store。
下面列举一些常见的action的实例:
对于action,其是一个普通的JS对象,但是在action中你必须得有type这个属性,这个属性通常用一个字符串表示。但是在通常的情况下不这样做,而是将这个表示字符串的变量封装在一个文件里面,你去调用里面的变量就可以了。
action creaters
就是创建action的函数,在redux中,其创建的方式如果下面这种
然后再redux中,还需要使用dispatch这个方法去监听,最后将这个过程返回到state中。下面就是监听的语法过程
这是第一种,下面的一种方式是先声明函数表达式,最后去调用即可
reducer
指定应用程序的状态如何更改,以响应发送到存储的操作。对于reducer首先就得明白其实质就是一个纯函数,在redux中,第一个参数表示的意思是一个state,最后返回的是一个新的newState。这就是纯函数的概念,接受一个什么样子的state,就返回同样类型的state。
经过上面的介绍后,接下来就是去写一个reducer,首先就是对于初始化reducer的两种方式
第二种就是使用es6的语法来初始化这个过程,
接下来就是将接收到的信息来进行处理的过程了
在上面的这个例子中,主要需要注意的地方就是Object.assgin({},state,{ visibilityFilter : action.filter }),在这里面需要注意的是,这种方式是间接的去改变state,而不是直接去改变的state。在Object.assgin()的这个方法中需要传入三个参数,第一个是空对象,第二个是此时的state,第三个是你需要去更改state的逻辑,执行完这个方法后就会返回一个newState。
处理多个action时的操作,以下面的案例所示:
整合reducer
首先当你对上面所说的内容有了个了解之后,还需要明白我们在处理一个项目中的数据的时候,每个独立的页面中的数据,都会有一个reducer,这些reducer就是一个子reducer,我们使用combineReducers(),来将所有的逻辑进行整合。如下面的例子所示:
首先需要的就是从redux中引入combineReducers,然后再对所有的reducer进行整合。
上面就是对你的子reducer进行整合的办法。下面举一个实际的例子。
在这个例子中,就是将两个reducer给整合在一起的实际例子。
对于action与reducer,主要是理清楚他们的怎样去实现这整个的转化过程。在上面所述的还有一个就是action creators与combineReducers()的用法与使用的情况。