Skip to content

Files

Latest commit

 

History

History
51 lines (42 loc) · 1.14 KB

no-arrow-functions-in-watch.md

File metadata and controls

51 lines (42 loc) · 1.14 KB

Pattern: Use of arrow functions to define watcher

Issue: -

Description

This rules disallows using arrow functions to defined watcher. The reason is arrow functions bind the parent context, so this will not be the Vue instance as you expect.

<script>
export default {
  watch: {
    /* ✓ GOOD */
    a: function (val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    b: 'someMethod',
    c: {
      handler: function (val, oldVal) { /* ... */ },
      deep: true
    },
    d: {
      handler: 'someMethod',
      immediate: true
    },
    e: [
      'handle1',
      function handle2 (val, oldVal) { /* ... */ },
      {
        handler: function handle3 (val, oldVal) { /* ... */ },
        /* ... */
      }
    ],
    'e.f': function (val, oldVal) { /* ... */ },

    /* ✗ BAD */
    foo: (val, oldVal) => {
      console.log('new: %s, old: %s', val, oldVal)
    }
  }
}
</script>

Further Reading