Action 的认识
简单点说 Action
就是一个对象,一个必须带 key 为 type 的对象[value是自己定义的],其他的 key 就根据用户自己喜好自己定义,如:
{type:”ADD”}
{type:”ADD”,key1:”“,key2:”“}
action
创建函数的意思就是创建一个返回类型为 action
的函数,为一个对象:
function add(){
// 逻辑处理
return{
type:"ADD",
}
}
使用的时候直接 store.dispatch(add())
就可以
action
创建函数表面是返回一个对象,真正的意义在于逻辑的封装
Reducer的认识
可以认为仅仅是一个称呼,纯函数,函数名可以自由定义,但是函数的参数只能是state
与action
,可以简单的理解为一个工厂函数,传递一个旧的state
通过加工后产出一个新的state
:
function count(state = 0, action) {
switch (action.type) {
case 'ADD':
return state + 1;
case 'REDUCER':
return state - 1;
default:
return state;
}
}
Store的认识
store
是一个全局对象,将action和reducer以及state联系在一起,主要职责:
- 维护应用的
state
- 提供
getState()
方法获取state - 提供
dispatch(action)
方法更新state - 通过
subscribe
方法注册监听器
简单使用案例
'use strict';
import {createStore} from 'redux';
function count(state = 0, action) {
switch (action.type) {
case 'ADD':
return state + 1
case 'REDUCER':
return state - 1;
default:
return state
}
}
let store = createStore(count);
let currentValue = store.getState();
console.log('当前的值:', currentValue);
//定义一个监听的方法
let listener = () => {
const previosValue = currentValue;
currentValue = store.getState();
console.log('上一个值:', previosValue, '当前值:', currentValue)
}
//创建一个监听
store.subscribe(listener);
//分发任务
store.dispatch({type:"ADD"});
store.dispatch({type:"ADD"});
store.dispatch({type:"ADD"});
store.dispatch({type:"REDUCER"});