Skip to content

Commit

Permalink
docs(README): add usage example
Browse files Browse the repository at this point in the history
  • Loading branch information
buschtoens committed Aug 28, 2019
1 parent 31aa377 commit 261cc17
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,72 @@
```
ember install ember-render-helpers
```

## Usage

### Example

Clicking the `Toggle` button will toggle the `isVisible` flag. When it switches
to `true`, `onDidInsert` will be called, because the `{{did-insert}}` helper is
inserted. When it switches to `false`, `onWillDestroy` will be called, because
the `{{will-destroy}}` helper is removed.

Clicking the `Random` button will set `randomValue` to a new random value. Every
time this happens, while `isVisible` is `true`, `onDidUpdate` will be called,
because one of the parameters passed to the `{{did-update}}` helper was updated.

Clicking the `Random` button _does not_ cause `{{did-insert}}` or
`{{will-destroy}}` to call `onDidInsert` and `onWillDestroy`, since these
helpers are not triggered by parameter updates.

```hbs
{{#if this.isVisible}}
{{did-insert this.onDidInsert 1 2 3 this.randomValue foo="bar" qux="baz"}}
{{will-destroy this.onWillDestroy 1 2 3 this.randomValue foo="bar" qux="baz"}}
{{did-update this.onDidUpdate 1 2 3 this.randomValue foo="bar" qux="baz"}}
{{/if}}
<button {{on "click" this.toggleVisibility}}>Toggle</button>
<button {{on "click" this.rollTheDice}}>Random</button>
```

```ts
import { action } from '@ember/object';
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';

export default class extends Component {
@tracked isVisible = false;

@tracked randomValue?: number;

@action
toggleVisibility() {
this.isVisible = !this.isVisible;
}

@action
rollTheDice() {
this.randomValue = Math.random();
}

@action
onDidInsert(positional: unknown[], named: Record<string, unknown>) {
console.log({ positional, named });
// => { positional: [1, 2, 3, 0.1337...], named: { foo: 'bar', qux: 'baz' } }
}

@action
onWillDestroy(positional: unknown[], named: Record<string, unknown>) {
console.log({ positional, named });
// => { positional: [1, 2, 3, 0.1337...], named: { foo: 'bar', qux: 'baz' } }
}

@action
onDidUpdate(positional: unknown[], named: Record<string, unknown>) {
console.log({ positional, named });
// => { positional: [1, 2, 3, 0.1337...], named: { foo: 'bar', qux: 'baz' } }
}
}
```

0 comments on commit 261cc17

Please sign in to comment.