首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >StimulusJS -如何确保控制器有所有必要的目标?

StimulusJS -如何确保控制器有所有必要的目标?
EN

Stack Overflow用户
提问于 2022-09-06 18:57:59
回答 1查看 20关注 0票数 0

我正试图找到一种方法,通过检查所有所需的目标是否存在,从而使我的刺激控制器更加健壮和可维护。如果有什么东西丢失了,我希望它能迅速而响亮地失败。

下面是我目前正在使用的内容:

代码语言:javascript
运行
复制
export default class extends Controller {
  static targets = ['name'];

  connect() {
    if (!that.hasNameTarget) {
      throw new Error('expected to find name target');
    }
  }
}

也许有人知道一个更地道的/干净的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2022-09-06 23:01:59

选项1-使用刺激调试器工具

刺激有一个debug模式,为刺激控制器注销信息/警告等。您可以通过stimulus.debug = true;启用此功能。

您可以通过this.application.logDebugActivity()在您自己的控制器中调用它-请参阅https://github.com/hotwired/stimulus/blob/main/src/core/application.ts#L95

代码语言:javascript
运行
复制
export default class extends Controller {
  static targets = ['name'];

  connect() {
    if (!that.hasNameTarget) {
      this.logDebugActivity(this.identifier, 'error', { message: 'target missing'});
      throw new Error('expected to find name target');
    }
  }
}

选项2-使用window.onerror回调

如果将当前代码保存在抛出错误的位置,那么刺激将不会在可能的情况下“破坏”任何东西,因为刺激内的所有调用都使用try/catch

但是,您可以通过创建一个onerror函数来确保您的错误做了一些“响亮”的事情。

见docs - https://stimulus.hotwired.dev/handbook/installing#error-handling

请参见一个示例,其中可以将其用于类似Sentry https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror之类的东西。

您也可以非常大声地用类似于此的东西来阻止UI。

代码语言:javascript
运行
复制
window.onerror = (message, url, lineNo, columnNo, error) => {
   document.body.style.backgroundColor = 'red';
   window.alert(message);
}

催复函

记住,在本地开发中只启用这些调试特性,您可以使用Webpack环境变量这样做,但这将根据您的工具不同而有所不同。

但是,在生产中,您可能希望将onerror调用推到您所拥有的任何日志记录基础结构。

stimulus.debug模式是相当“嘈杂”的,可能是太多的信息,这取决于您的设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73626661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档