redux的基本用法:
action:一是含有type参数的js对象,一般由store.dispatch(action)
调用,该对象是描述store
要变化的一些数据来源,例如:
dispatch
调用的方式为store.dispatch(setVar('hello', 'java'))
reducer: 这是store真正改变的函数,返回一个新的state对象,可以用一些assign(), concat(), splice()
函数,或者用immutableJS方式生成新的对象
当然不同的reducer可以通过combineReducers()
去合并多个散列的reducers
,
store: 通过createStore(reducers)
去生成单一的appData集;其有公共的方法:
getState()
获取state值dispatch()
改变state的值subscribe(listener)
注册监听函数
applyMiddleware(…middlewares):middleware(arguments)
有两个参数,Store
‘dispatch
和getState
用法:
bindActionCreators: 将返回为action
的函数转变成key
为该函数名,value
为将将dispatch
包含在action
的函数
参数:actionCreators
和dispatch
,返回一个和action
相似的对象,只是每个action
对象都会直接调用store.dispatch(action)
redux 的源码结构
createStore的源码
|
|
combineReducers的源码:
|
|
总结
最基本的源码就这些,写法还是挺精致的,回到文中一开始的那张图,结合一段代码来看
|
|
该页面就是一个创建了store
作为state
的数据集,在每次用户交互的时候,通过store.dispatch(action)
来改变store值,同时添加监听函数store.subscribe(render)
即每次dispatch
的时候都会调用该render
;这样一来,形成了单一数据流,数据变化就引起界面的变化。