【问题标题】:componentDidUpdate get triggers at multiple screenscomponentDidUpdate 在多个屏幕上获取触发器
【发布时间】:2020-11-30 23:20:57
【问题描述】:

我使用redux-thunk 进行 API 调用。当响应从服务器返回时,我在componentDidUpdate 捕获它们,并进行如下简单验证

async componentDidUpdate(prevProps) {
     if (this.props.successCalling && !prevProps.successCalling) {
          executeSomeCode();
     }
}

问题是,当响应从服务器 componentDidUpdate 返回时,我在 2 个不同的屏幕上进行了 2 次相同的验证,这两个验证都得到了满足。因此它在两个不同的屏幕上同时运行executeSomeCode()。我应该如何处理这种情况?

【问题讨论】:

  • 您从哪里调用该服务?从每个屏幕?
  • 两个屏幕都调用相同的 API,但参数不同。

标签: javascript reactjs react-native redux-thunk


【解决方案1】:

在为特定屏幕调用服务时,您可以使用类级别变量,该变量可以充当开关,例如 - true/false,其中 this.switch 最初将设置为 false。在调用服务时,只需将该类变量更新为 true 并将该变量添加到上面示例中提到的 if 逻辑检查。

这样每个屏幕都有自己的开关,可用于确定服务调用是否针对该特定屏幕。

【讨论】:

  • 我没有按照您的建议使用 switch case,而是提出了另一个解决方案(受您的解决方案的启发),我将额外的参数传递给我的 API 方法,并将参数附加到我的返回结果中。因此 didUpdate 中的方法可以进行逻辑检查。所以我会考虑你的建议作为我的答案(:
猜你喜欢
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
相关资源
最近更新 更多