Skip to content

Commit 6bb2d15

Browse files
Merge pull request #21131 from johanrd/docs/18991
[DOCUMENTATION] remove observers from recompute docs #18991
2 parents 665c334 + 6aed4a3 commit 6bb2d15

1 file changed

Lines changed: 21 additions & 14 deletions

File tree

  • packages/@ember/-internals/glimmer/lib

packages/@ember/-internals/glimmer/lib/helper.ts

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -140,25 +140,32 @@ export default class Helper<S = unknown> extends FrameworkObject {
140140
On a class-based helper, it may be useful to force a recomputation of that
141141
helpers value. This is akin to `rerender` on a component.
142142
143-
For example, this component will rerender when the `currentUser` on a
144-
session service changes:
143+
In most cases, `recompute` is not needed because accessing tracked
144+
properties in `compute` will automatically re-run the helper when
145+
those properties change. Use `recompute` only when you need to
146+
trigger a recomputation imperatively, for example in response to an
147+
external event:
145148
146-
```app/helpers/current-user-email.js
147-
import Helper from '@ember/component/helper'
148-
import { service } from '@ember/service'
149-
import { observer } from '@ember/object'
149+
```app/helpers/current-time.js
150+
import Helper from '@ember/component/helper';
150151
151-
export default Helper.extend({
152-
session: service(),
153-
154-
onNewUser: observer('session.currentUser', function() {
155-
this.recompute();
156-
}),
152+
export default class CurrentTimeHelper extends Helper {
153+
interval = null;
157154
158155
compute() {
159-
return this.get('session.currentUser.email');
156+
return new Date().toLocaleTimeString();
157+
}
158+
159+
constructor() {
160+
super(...arguments);
161+
this.interval = setInterval(() => this.recompute(), 1000);
160162
}
161-
});
163+
164+
willDestroy() {
165+
super.willDestroy();
166+
clearInterval(this.interval);
167+
}
168+
}
162169
```
163170
164171
@method recompute

0 commit comments

Comments
 (0)