【问题标题】:is history.push() an async call in react?history.push() 是反应中的异步调用吗?
【发布时间】:2019-11-08 17:43:06
【问题描述】:

我正在使用我的reducer 中的react 提供的历史对象(从组件传递到reducer)在更新状态时有条件地路由到其他页面。 我知道那不是必须处理导航的方式。 但它仍然有效,history.push() 函数异步调用是否像我一样 在reducer中返回修改状态之前执行它。 有人可以解释一下为什么会这样吗

const reducer = (state = initialState, action) => {
var stateClone = {...state};
switch(action.type)
{
  case 'LogIn':
  var user = state.users.filter((user) => user.userName === action.userName && user.password === action.password );
  if(user.length > 0 )
  {
    var loggedInUser = {...user[0]};
    stateClone.loggedInUser = loggedInUser;
    action.history.push('/products');
    return stateClone;
  }
  else {
    alert('Wrong Credentials');
  }
  return state;
}
}

【问题讨论】:

  • history.push 可能是同步的,但可能会以异步方式影响应用程序。对于初学者来说,reducer 不应该包含副作用。

标签: reactjs react-router


【解决方案1】:

是的,这是一个异步调用。看看这个discussion

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多