当前位置: 首页 > 面试题库 >

将callBacks传递给redux异步操作是否被认为是一种好习惯?

贺自明
2023-03-14
问题内容

我想为成功/错误响应显示不同的通知栏,我将两个callBack传递给我的react组件中的redux异步操作,如下所示:

<Button
  onClick={e => this.props.actions.asyncAction(item, this.showSuccessBar, this.showErrorBar)}
/>

其中asyncAction看起来像这样:

export function asyncAction(item, successCallback, errorCallback) {
  return (dispatch, getState) => {
    dispatch(requestItem(item));
    return fetch("api.some_url/items/item")
      .then(response => response.json())
      .then(json => {
        if (json.success) {
          dispatch(receivePostsSuccess(reddit, json));
          successCallback();
        } else {
          dispatch(receivePostsFail(reddit, json));
          errorCallback();
        }
      });
    }
  };
}

是否认为这与模式相反?换句话说,通知栏是否应根据状态更改而不是根据回调打开?


问题答案:

模式本身很好。如果这是组件本地的通知,请随时避免通过Redux对其进行接线。

也就是说,回调是完全不必要的, 因为您已经在返回promise。 只需等待其完成。

this.props.dispatch(asyncAction(item)).then(onSuccess, onFailure);

但是,如果您有许多带有此类通知栏的组件,则最好使用化简器保留当前通知并对操作做出反应。



 类似资料:
  • 问题内容: 我想知道是否有人可以使用空白HTML表单操作将其发布回当前页面,从而给出“最佳实践”响应。 问题答案: 您可以做的最好的事情就是完全忽略action属性。如果您不填写表格,表格将被提交到文档的地址,即同一页面。 也可以将其保留为空,并且任何实现HTML表单提交算法的浏览器都将其视为等同于文档的地址,这主要是因为浏览器当前的工作方式是: 让action作为Submitter元素的acti

  • 我对Redux有相当的了解。 我想知道的一件事是,在一个大型应用程序中,会有多个操作和减缩器。 我的问题是 > reducer中是否存在重复操作? 即使当我查看redux流时,我也不理解这些问题 请澄清我的困惑。

  • 问题内容: 我有一个带有一些componentDidMount逻辑的React组件: 是否可以通过props传递此组件,以便componentDidMount()中的所有内容都被执行,以某种方式伪造以便截取屏幕截图?遵循以下原则: 我知道我可以使用,但是我有一些复杂的登录逻辑,我想使用这样的快捷方式来避免,而是将所有需要的道具直接传递给组件? 问题答案: 在这里回答了这个问题。让我们在这里尝试相同

  • 编译器必须为constexpr的不同路径生成多个函数,这取决于函数的调用方式。所以也许它在使用过载分辨率。 被接受的建议没有提到“sfinae”或“过载分辨率”。 所以我很好奇这两个概念是否适用于“constexpr if”。

  • 问题内容: 我意识到这是一个基本问题,但是我在其他地方找不到答案。 是同步还是异步? 万一它是异步的,是否有可能在传播了动作之后添加一个回调,这是可能的? 问题答案: AFAIK,调度动作是同步的。如果您愿意解决异步调用,则可以在redux中使用thunk- middleware ,其中将dispatch作为回调函数提供,您可以根据需要调用它。

  • 假设我有这个应用程序: 我所需的输出如下: 我知道使用反射或其他一些运行时技术检查异常的类型,并在异常捕获子句中放置if语句,就像一次捕获多个异常一样,但我想获得关于上述方法是否可行的反馈。