redux中的不可变减速器

时间:2017-07-30 09:40:14

标签: javascript reactjs ecmascript-6 redux

这个减速机看起来不错吗?为什么作者使用了let users;,这对我来说是不必要的。在FETCH_USER_FULLFILLED情况下会导致2个用户吗?

const initalState = {
  users: [],
  loading: false,
  error: null,
};

// REDCUER
function usersReducer(state = initalState, action) {
  let users;
  switch (action.type) {
    case 'FETCH_USER_PENDING':
      return { ...state, loading: true };
    case 'FETCH_USER_FULFILLED':
      users = action.payload.data.results;
      return { ...state, loading: false, users };
    case 'FETCH_USER_REJECTED':
      return { ...state, loading: false, error: `${action.payload.message}` };
    default:
      return state;
  }
}

export default usersReducer;

1 个答案:

答案 0 :(得分:0)

reducer很好,它不会导致FETCH_USER_FULLFILLED中的两个用户。但是,你是对的,不需要let users;。所以代码看起来像

case 'FETCH_USER_FULFILLED':
  return { ...state, loading: false, users: action.payload.data.results };

当reducer首次执行时,它将从initalState开始,因为如果没有传递param,它将是默认值。因此,users在开头将为空数组,并将在FETCH_USER_FULLFILLED操作

上填充

修改 users已添加以利用ES6中的属性value shorthand功能