let allNum = {num :1000}
// 创建reducer,名字的默认值为
function reducer(state,action) {
let tmp = {}
if (action.type == "decrease"){
allNum.num = allNum.num - action.value;
tmp = Object.assign({},state,{num: allNum.num})
return tmp
}else if(action.type == "increase"){
allNum.num = allNum.num + action.value;
tmp = Object.assign({},{num: allNum.num})
return tmp
}else{
return state
}
}
// 创建store存储数据(传入处理函数reducer,核心数据allNum)
let store = createStore(reducer,allNum)
console.log("初始化的数据为",store.getState('num'))
// 添加监听函数
store.subscribe(() => {console.log("监听函数发出:",store.getState())});
// 发出action
let tmp = {};
tmp = store.dispatch({type: "decrease",value: 10})
console.log("---->",tmp);
tmp = store.dispatch({type: "decrease",value: 100})
console.log("---->",tmp);
tmp = store.dispatch({type: "increase",value: 31})
console.log("---->",value: 123})
console.log("---->",tmp);
class MyComponent extends React.Component {
render() {return
}
ReactDOM.render(
React和Redux组合使用
React组件,有两个数据集,props和state
props表示外部传入组件的参数(数据由外部传入,可以被外部更改)
state表示组件固有的属性(数据私有,不可以被外部更改)
我们可以把多个React组件的props交由Redux进行管理,这样就实现了React组件之间数据的共享
组件如何读写数据
组件通过action发送信号,reducer处理action,story内的值被reducer修改,由于React组件已经被绑定到story中,所以story内的数据被修改后,可以直接同步到React的组件中
小案例: 实现一个组合计数器
单个计数器的数据由组件自身state管理
三个计数器的数据只和由Redux管理
实现的源码如下
index.html