javascript - Web应用程序使用Redux,如何处理逻辑只需要执行一次

标签 javascript mvvm frontend redux

说我们正在使用带有 redux 的 mvvm 框架,每次存储调度一个操作时,我都会将我的组件更新为

Store.subscribe(() => {
  var { Order, Payment } = Store.getState():

  this.order = Order;
  this.payment = Payment;

  this.setCountDown(Order.leftTime);
  this.checkIsPaymentValid(Payment);
});

这里,setCountDowncheckIsPaymentValid只需要执行一次,从此以后再也不会被调用。因此,我目前正在向组件添加状态,它变得像旧的 jquery 方式一样,变成类似于下面的内容:

switch(Order.status) {
  case ORDER_STATUS_NORMAL:
    break;
  case ORDER_HAS_SET_COUNTDOWN:
    break;
}

对于处理此类情况有什么建议吗?

最佳答案

如果您需要基于操作而不是当前状态执行某些逻辑,这通常表明它应该作为分派(dispatch)操作的一部分发生。换句话说,在 dispatch() 之前或之后执行这些副作用,而不是在更改处理程序中执行。

如果此逻辑跨越多个组件,您可能需要考虑使用类似 Redux Saga 的内容。它允许您定义长期运行的“传奇”,可以“采取”操作并执行一些副作用或向商店分派(dispatch)更多操作。

关于javascript - Web应用程序使用Redux,如何处理逻辑只需要执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35811072/

相关文章:

javascript - 尝试实现 javascript 弹出窗口

javascript - KnockoutJS 处理引导日期选择器和日期格式

javascript - 将函数作为 AngularJS 中的选择值传递

javascript - 检查 jQuery 方法是否存在

wpf - 如何为不同的数据模板设置窗口位置

javascript - 使用 npm start 启动 CRA 时出现问题

mysql - 是否有基于文本的 mysql 用户界面?

android - Viewmodel 观察 LiveData - 如何?

c# - WPF - 修改 MahappsMetro DataGrid 样式

javascript - 强制前端的 http 请求超时