redux学习

Redux初探

2016-06-25  本文已影响282人  朗迹张伟

在这张图中,我们可以很清晰的看到,view中产生action,通过store.dispatch(action)将action交由reducer处理,最终根据处理的结果更新view。
在这个过程中,action是简单对象,用于描述一个动作以及对应于该动作的数据。

我们来看下redux到底是如何工作的。


<pre>
import React from 'react'
import { createStore, bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import ReactDom from 'react-dom'
import { Provider } from 'react-redux'
<b />
function createAction(){
return{
type: 'ADD_TODO',
data: 'some data'
}
}
<b />
class App extends React.Component{
constructor() {
super();
}
render() {
return(
<div style={{
width:'200px',
height:'200px',
margin:'100px',
border:'2px solid black'
}}>
<div onClick = {
this.props.actions.createAction.bind(this)
}> {"Click Me!"} </div>
</div>
) ;
}
}
<b />
function mapStateToProps(state){
return{
data: state
}
}
<b />
function mapDispatchToProps(dispatch){
return{
actions: bindActionCreators({createAction}, dispatch)
}
}
<b />
var AppApp = connect( mapStateToProps, mapDispatchToProps)(App);
<b />
function reducer(state, action){
console.log(action);
return state;
}
<b />
var store = createStore(reducer);
<b />
ReactDom.render(
<Provider store={store}>
<AppApp/>
</Provider>
, document.getElementById('container'));
</pre>

Redux Middleware


自己的middleware怎么写?


学了这些,我们可以自己写一个middleware练练手。首先在项目下建个middlewares的文件夹,新建一个callTraceMiddleware.js来追踪函数的调用过程。在funCallTrace.js添加如下代码:
<pre>
export default function callTraceMiddleware ({dispatch,getState}){
return next=> action =>{
console.trace();
return next(action);
}
}
</pre>

然后在调用中间件部分添加中间件:
<pre>
const createStoreWithMiddleware = applyMiddleware( thunkMiddleware, loggerMiddleware, callTraceMiddleware)(createStore);
</pre>

这样我们运行在浏览器窗口就可以看到打印的函数调用轨迹。是不是很简单……

上一篇 下一篇

猜你喜欢

热点阅读