减速器有条件地返回状态

时间:2018-02-20 22:50:08

标签: redux

Haven在谷歌搜索和文档上发现了很多,但是使用不可变的js和redux有条件地设置状态的最佳实践和常见模式是什么?

见这个例子:

const initialState = fromJS({
   username: '',
   roles: null,
});

function appReducer(state = initialState, action) {
  switch (action.type) {
     case LOGIN:
       return state
         .set('username', action.token.preferred_username
         .set('roles', action.token.roles); // roles could be undefined 
  }
}

问题是角色可能是未定义的,所以你如何实际有条件地设置状态,因为这个例子不起作用:

case LOGIN:
       if (action.token.roles && action.token.roles.length > 1) {
           state.set('roles', action.token.roles); 
       }
       return state
         .set('username', action.token.preferred_username

返回的状态没有定义角色。在使用Immutable JS时,如何有条件地设置状态?

由于

1 个答案:

答案 0 :(得分:0)

感谢@Mario Tacke,您正走在正确的轨道上。我已经在reducer(动作)之前完成了一级逻辑。