最も簡単なreduxチュートリアル

2107 ワード

自分で教程の手に従ってreduxの簡単な教程をたたいて、最後にやっと通過して、記念します.
Notice
  • にはloadshのdeepclone機能が必要です.
  • stateからnextStateをコピーした後、nextState上で直接データを操作します.
  • 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())
        }