为什么reducer里不用switch呢?

来源:5-5 Action 和 Reducer 的编写

MichaelMa

2018-07-28

老师您好,

reducer里面我们会重复用到 action.type的判断,重复声明cosnt newState和return newState。根据DRY原则,能不能用switch代替if来判断呢?尤其是如果在前面逻辑的判断增多的情况下,代码的冗余会越来越多。

写回答

2回答

Dell

2018-07-29

完全可以,后面的课程里我用的就是switch了

0
0

MichaelMa

提问者

2018-07-28

我试了一下好像能运行?如下

import {CHANGE_INPUT_VALUE, ADD_TO_LIST, DELETE_ITEM} from './actionTypes';


const defaultState = {
  inputValue: '',
  list: []
};

export default (state = defaultState, action) => {
  const newState = JSON.parse(JSON.stringify(state));
  switch(action.type){
    case CHANGE_INPUT_VALUE:
      newState.inputValue = action.value;
      return newState;
    
    case ADD_TO_LIST:
      newState.list.push(newState.inputValue);
      newState.inputValue = '';
      return newState;

    case DELETE_ITEM:
      newState.list.splice(action.index,1)
      return newState;
      
    default:
      return state;
  }
};

这样有什么问题或者说影响吗?

0
0

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程