如何解决无法通过Ember JS中的did-update更新跟踪的媒体资源
我正在尝试在模板中使用did-update
来触发其他组件在组件内执行的操作。我以前做过此操作,但从未执行过更新跟踪属性的操作。
我试图显示一个模态窗口,其显示依赖于tracked属性。
我尝试使用该组件的另一个函数中未调用的另一个跟踪属性,并且遇到相同的错误。
是否可以通过此方法更新跟踪的属性?
// template
{{did-update this.triggerShare @showShareModal}}
// component
@tracked isShareOpen = false;
@action
triggerShare() {
this.isShareOpen = !this.isShareOpen;
}
我遇到以下错误
index.js:172 Uncaught (in promise) Error: Assertion Failed: You attempted to update `isShareOpen` on `ListingShareComponent`,but it had already been used previously in the same computation. Attempting to update a value after using it in a computation can cause logical errors,infinite revalidation bugs,and performance issues,and is not supported.
`isShareOpen` was first used:
- While rendering:
----------------
(instance of a `(unknown object)` modifier)
解决方法
对于其他遇到给我们的难忘的宝石灰烬帽子的人来说,它有一个简单的解决方法。我不知道为什么,但是ember不喜欢将属性设置为自身相反值的切换功能。
我将切换功能分为一个打开和关闭功能,将值显式设置为true或false都可以。
// template
{{did-update this.triggerShare @showShareModal}}
// component
@tracked isShareOpen = false;
@action
openShare() {
this.isShareOpen = true;
}
@action
closeShare() {
this.isShareOpen = false;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。