@@ -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