redux-处于“脏”状态时处理组件外操作调用的最佳方法吗?

时间:2019-08-30 12:31:22

标签: reactjs redux react-redux redux-logic

我正在使用redux-logic处理我的react-redux应用程序的业务逻辑。

我有component A,其中包含一些字段。在此组件之外,我还有其他组件,用户可以单击它们并调用操作。

在组件A中执行某些操作时,用户可以单击其他组件。

“捕获”这些呼叫的最佳方法是什么,但是首先显示一些弹出窗口,说“嘿,您确定吗?”如果用户单击“确定”-触发这些呼叫?

到目前为止,我只是设法做这样的事情:

  • 例如,用户从组件B调用操作(而组件A中的业务仍未完成)
  • 监听此调用的逻辑,检查我们是否处于脏模式。如果是的话,我们拒绝通话。

对我来说不合适的两件事:

  1. 我需要在每次通话中实施此检查
  2. 它不告诉我显示弹出窗口。

2 个答案:

答案 0 :(得分:0)

听起来像您需要使用中间件。 Redux-saga应该是答案。

结帐:https://redux-saga.js.org/docs/basics/DispatchingActions.html

答案 1 :(得分:0)

如果您使用的是redux-thunk,那么这样简单:

function goingAwayAction(){
  return (dispatch, getState) => {
    const state = getState();
    if (Selectors.formIsDirty(state)) {
      confirm("Are you sure?", () => { dispatch(GoAway()) })
    } else {
      dispatch(GoAway())
    }
  }
}

我并不特别了解redux-logic,但是您的一般解决方案是检查表单是否脏污,这是异步操作的一部分。有很多用于确认的库,您只需指定一个回调即可,当它们说“是”时发生,这将为您简化一些逻辑。我以前使用过react-confirm-alert并成功!