最も簡単なreduxチュートリアル
2107 ワード
自分で教程の手に従ってreduxの簡単な教程をたたいて、最後にやっと通過して、記念します.
Noticeにはloadshのdeepclone機能が必要です. stateからnextStateをコピーした後、nextState上で直接データを操作します.
Notice
var nextState=_.cloneDeep(state);
nextState.todos.push({"content":action.content});
return nextState;
function incCreator(){
return {type:'INCREMENT'}
};
function decCreator(){
return {type:"DECREMENT"}
}
function pushCreator(content){
return {type:"PUSH",content:content}
}
var initState={
count:0,
todos:[]
}
function reducer(state,action){
// state
state = state || initState;
switch(action.type){
case 'INCREMENT':
var nextState=_.cloneDeep(state)
nextState.count++;
return nextState;
case 'DECREMENT':
var nextState=_.cloneDeep(state)
nextState.count--;
return nextState;
case 'PUSH':
// var group=state.contentGroup;
var nextState=_.cloneDeep(state);
nextState.todos.push({"content":action.content})
return nextState;
default:
return state;
}
}
var store=Redux.createStore(reducer);
var state=store.getState();
function add(){
store.dispatch(incCreator())
console.log(store.getState())
}
function mini(){
store.dispatch(decCreator())
console.log(store.getState())
}
function push(){
var str=document.getElementById("content").value;
store.dispatch(pushCreator(str))
console.log(store.getState())
}