具有新状态的 Redux 调度操作和化简器

redux dispatch action and reducer with new state

本文关键字:操作 调度 Redux 新状态 状态      更新时间:2023-09-26

我有这样的操作:

export function login(){
  my_login(function(response){
    if(response.status == "ok"){
        loginSuccess(response)
        }
       })
      }
export function loginSuccess(response){
  return dispatch => {
  dispatch({ response, type: types.LOGIN });
  console.log("dispatched");
  console.log(getState()); ---> I want the updated state
  router.transitionTo("/some_url");----> after this I want to route it to somewhere
  };
}

当我的login操作被调用时,它再次调用my_login然后我正在调度我的loginSuccess操作。

我有一个减速器,例如:

const initialState = [
  {
    fname: null,
    lname: false,
  }
]
export default function login(state = initialState, action) {
  switch (action.type) {
    case LOGIN:
    console.log("actions dude")
      console.log(action)
        return 
        [{
          fname: action.fname,
          lname: actin.lname,
        }]
    default:
      return state
  }
}

在这里,我的状态没有改变,我也没有在上面的行动中获得getState()值。

我不认为我的化简器被调用并且状态已更新。

谁能问我这里有什么问题?

我认为你错过了dispatch(loginSuccess(response))

当心裸返回语句。自动分号插入的已知陷阱之一是return变得return;

所以代替:

return 
[{
  fname: action.fname,
  lname: action.lname,
}]

请改为执行以下操作:

return [{
  fname: action.fname,
  lname: action.lname,
}];