Ember Octane 升级:如何处理 eslint 错误 no-action

Ember Octane upgrade: how to handle eslint error no-action

这与:

相关

在 ../templates/change-password.hbs 文件中,我收到以下 eslint 错误:

Do not use action as {{action ...}}. Instead, use the on modifier and fn helper. no-action

代码:

<Clients::ChangePasswordForm @chgpwd={{this.model}} @changePassword={{action 'changePassword'}} @errors={{this.errors}} />

接受的答案指示我使用该语法。我应该用不同的方式处理这个问题还是应该忽略错误?

在 Ember Octane 中,更新了 linters 以鼓励使用 on 修饰符和 fn 辅助函数而不是 action 辅助函数和修饰符。 action 修饰符用于将适当的 this 上下文绑定到函数。使用 Octane,@action 装饰器是将上下文绑定到任何方法的推荐方法。

在您的情况下,由于您将 changePassword 作为闭包操作传递给组件 Clients::ChangePasswordForm,因此将函数传递给组件的推荐方法如下:

<Clients::ChangePasswordForm 
  @chgpwd={{this.model}}
  @changePassword={{this.changePassword}}
  @errors={{this.errors}} 
/>

如果您需要将任何参数(例如 this.argument)与函数一起传递,请使用 fn 辅助函数:

<Clients::ChangePasswordForm 
  @chgpwd={{this.model}}
  @changePassword={{fn this.changePassword this.argument}}
  @errors={{this.errors}} 
/>

因为您已经标记了您的操作 。你已准备好出发。

这里是official guide关于如何从经典事件处理程序升级到 Octane 推荐的方式

lint 消息可能更有帮助,ember-template-lint 存储库上已经有一个 issue opened,可以在使用经典 action 帮助程序时公开更多有用的错误消息。