@aaron1994/vue-component-decorator
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

vue-component-decorator

Do the same work like vue-class-component, vue-property-decorator, vue-facing-decorator.

This readme refers to vue-facing-decorator and vue-class-component, thank you.


Installation

npm i @aaron1994/vue-component-decorator

Usage

@component()
class Component {

  /**
   * member of data
   * @link https://cn.vuejs.org/api/options-state.html#data
   */
  public foo = 'foo';

  /**
   * member of methods
   * @link https://cn.vuejs.org/api/options-state.html#methods
   */
  public bar() {
    return this.foo + 'bar';
  }

  /**
   * declare props
   * @link https://cn.vuejs.org/api/options-state.html#props
   */
  @prop({
    type: Number, default: 0, required: true,
    validator: (value) => {
      return value >= 0;
    },
  })
  public declare prop: number;

  /**
   * declare watch
   * @link https://cn.vuejs.org/api/options-state.html#watch
   */
  @watch('foo', { immediate: true, deep: true })
  public onFooChange(val: string, old: string) {

  }

  /**
   * computed getter
   * @link https://cn.vuejs.org/api/options-state.html#computed
   */
  public get computedFoo() {
    return this.foo;
  }

  /**
   * computed setter
   * @link https://cn.vuejs.org/api/options-state.html#computed
   */
  public set computedFoo(val) {
    this.foo = val;
  }

   /**
   * declare provide with options
   * @link https://cn.vuejs.org/guide/components/provide-inject.html#provide
   */
  @provide('foo', 'provideFoo')
  public declare provided: string;

   /**
   * declare inject
   * @link https://cn.vuejs.org/guide/components/provide-inject.html#inject
   */
  @inject()
  public declare injected: string;

  /**
   * declare vmodel = prop + auto $emit on set
   * @link https://cn.vuejs.org/guide/components/v-model.html
   */
  @model()
  public declare vmodel: string;

  /**
   * declare foo = this.$refs.fooRef
   * @link https://cn.vuejs.org/api/built-in-special-attributes.html#ref
   */
  @ref({ from: 'fooRef' })
  public declare refEl: HTMLElement;

}

Documentation

The documentation is not ready yet. But you can see test file.

Package Sidebar

Install

npm i @aaron1994/vue-component-decorator

Weekly Downloads

3

Version

1.0.6

License

MIT

Unpacked Size

146 kB

Total Files

98

Last publish

Collaborators

  • aaron1994