Redux中文文档:
Redux 入门教程(一):基本用法:
http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_usages.html
Redux 入门教程(二):中间件与异步操作:
http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_two_async_operations.html
Redux 入门教程(三):React-Redux 的用法:
http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_three_react-redux.html
redux工作流程
redux的工作流程可以大致总结为如下过程:
state-->actionCreator-->reducer-->combineReducers-->createStore-->bindActionCreators-->connect(mapStateToProps, mapDispatchToProps)(SomeComponent)
- 设计全局 state 的数据结构 ;
const ACTION_NAME= 'ACTION_NAME'
{
type: ACTION_NAME,
text: 'Your data'
}
- 设计更改 state 数据的 actionTypes 常量,以及其他跟视图展现相关的 actionTypes 常量;
上步骤中ACTION_NAME即是actionTypes常量
const ACTION_NAME= 'ACTION_NAME'
- 根据 actionTypes 常量,编写 actionCreator函数;
function doSomeAction(text) {
return {
type: ACTION_NAME,
text
}
}
- 根据各个 actionCreator 的返回值,设计 reducer 函数处理action传入的数据;
function doSomeThing(state = initialState, action) {
switch (action.type) {
case ACTION_NAME:
return Object.assign({}, state, {
text: action.text
})
default:
return state
}
}
- 在编写完了所有 reducer 函数之后,createStore(reducer, initState) 得到全局 store 对象,并通过Provider传递给根组件;
import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import doSomeThing from './reducers'
import App from './components/App' //一般为根组件(本文件)之后的主页面
let store = createStore(doSomeThing)
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
- 在需要使用redux的容器组件中,用 bindActionCreators 函数将 actionCreators 和 store.dispatch 绑定起来,得到一组能修改全局状态的函数 ;
bindActionCreators(actions, dispatch)
- 在需要使用redux的容器组件中,分发各个状态和状态修改函数到各个 页面属性和DOM 事件中:
function mapStateToProps (state) {
let {a, b, c} = state
return {a,b,c}
}
function mapDispatchToProps (dispatch) {
return bindActionCreators(actions, dispatch)
}
export default connect(mapStateToProps, mapDispatchToProps)(SomeComponent)
网友评论